2018-04-12 20:00:09 -04:00
|
|
|
package bootcommand
|
|
|
|
|
2018-04-13 17:41:17 -04:00
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
2018-04-12 20:00:09 -04:00
|
|
|
|
|
|
|
func Test_chunkScanCodes(t *testing.T) {
|
|
|
|
|
|
|
|
var chunktests = []struct {
|
|
|
|
size int
|
|
|
|
in [][]string
|
|
|
|
out [][]string
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
3,
|
|
|
|
[][]string{
|
|
|
|
{"a", "b"},
|
|
|
|
{"c"},
|
|
|
|
{"d"},
|
|
|
|
{"e", "f"},
|
|
|
|
{"g", "h"},
|
|
|
|
{"i", "j"},
|
|
|
|
{"k"},
|
|
|
|
{"l", "m"},
|
|
|
|
},
|
|
|
|
[][]string{
|
|
|
|
{"a", "b", "c"},
|
|
|
|
{"d", "e", "f"},
|
|
|
|
{"g", "h"},
|
|
|
|
{"i", "j", "k"},
|
|
|
|
{"l", "m"},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
-1,
|
|
|
|
[][]string{
|
|
|
|
{"a", "b"},
|
|
|
|
{"c"},
|
|
|
|
{"d"},
|
|
|
|
{"e", "f"},
|
|
|
|
{"g", "h"},
|
|
|
|
{"i", "j"},
|
|
|
|
{"k"},
|
|
|
|
{"l", "m"},
|
|
|
|
},
|
|
|
|
[][]string{
|
|
|
|
{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m"},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tt := range chunktests {
|
|
|
|
out, err := chunkScanCodes(tt.in, tt.size)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equalf(t, tt.out, out, "expecting chunks of %d.", tt.size)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_chunkScanCodeError(t *testing.T) {
|
|
|
|
// can't go from wider to thinner
|
|
|
|
in := [][]string{
|
|
|
|
{"a", "b", "c"},
|
|
|
|
{"d", "e", "f"},
|
|
|
|
{"g", "h"},
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err := chunkScanCodes(in, 2)
|
|
|
|
assert.Error(t, err)
|
|
|
|
}
|
2018-04-13 17:41:17 -04:00
|
|
|
|
|
|
|
func Test_pcatSpecialLookup(t *testing.T) {
|
|
|
|
in := "<rightShift><rightshiftoff><RIGHTSHIFTON>"
|
|
|
|
expected := []string{"36", "b6", "b6", "36"}
|
|
|
|
var codes []string
|
|
|
|
sendCodes := func(c []string) error {
|
|
|
|
codes = c
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
d := NewPCATDriver(sendCodes, -1)
|
|
|
|
seq, err := GenerateExpressionSequence(in)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
err = seq.Do(context.Background(), d)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, expected, codes)
|
|
|
|
}
|