package parser import ( "fmt" "testing" "git.makaay.nl/mauricem/go-parsekit/parse" ) type statesT struct { name string in string out interface{} err string } type parseTest struct { input interface{} expected []string } func testParseHandler(t *testing.T, p *parser, handler parse.Handler, test parseTest) { err := parse.New(handler)(test.input) results := []string{} for _, cmd := range p.commands { results = append(results, cmd.String()) } if err != nil { results = append(results, fmt.Sprintf("Error: %s", err)) } for i, e := range test.expected { if i > len(results)-1 { t.Errorf("No result at index %d, expected: %s", i, e) continue } r := results[i] if e != r { t.Errorf("Unexpected result at index %d:\nexpected: %s\nactual: %s\n", i, e, r) } } if len(results) > len(test.expected) { t.Errorf("Got more results than expected, surplus result(s):\n") for i := len(test.expected); i < len(results); i++ { t.Errorf("[%d] %s", i, results[i]) } } }