package bootcommand import ( "fmt" "log" "strings" "testing" "github.com/stretchr/testify/assert" ) func toIfaceSlice(v interface{}) []interface{} { if v == nil { return nil } return v.([]interface{}) } func Test_parse(t *testing.T) { in := "" in += "foo/bar > one 界" in += " b" in += "" expected := []string{ "Wait<1s>", "Wait<20s>", "Wait<3s>", "Wait<4m0.000000002s>", "LIT-Press(f)", "LIT-Press(o)", "LIT-Press(o)", "LIT-Press(/)", "LIT-Press(b)", "LIT-Press(a)", "LIT-Press(r)", "LIT-Press( )", "LIT-Press(>)", "LIT-Press( )", "LIT-Press(o)", "LIT-Press(n)", "LIT-Press(e)", "LIT-Press( )", "LIT-Press(界)", "LIT-On(f)", "LIT-Press( )", "LIT-Press(b)", "LIT-Off(f)", "LIT-Press(<)", "LIT-Press(f)", "LIT-Press(o)", "LIT-Press(o)", "LIT-Press(>)", "Spec-Press(f3)", "Spec-Press(f12)", "Spec-Press(spacebar)", "Spec-Press(leftalt)", "Spec-Press(rightshift)", "Spec-Press(rightsuper)", } got, err := ParseReader("", strings.NewReader(in)) if err != nil { log.Fatal(err) } gL := toIfaceSlice(got) for i, g := range gL { assert.Equal(t, expected[i], fmt.Sprintf("%s", g)) log.Printf("%s\n", g) } } func Test_special(t *testing.T) { var specials = []struct { in string out string }{ { "", "Spec-Press(rightshift)", }, { "", "Spec-On(del)", }, { "", "Spec-Off(enter)", }, } for _, tt := range specials { got, err := ParseReader("", strings.NewReader(tt.in)) if err != nil { log.Fatal(err) } gL := toIfaceSlice(got) for _, g := range gL { assert.Equal(t, tt.out, g.(*specialExpression).String()) } } }