package main import "testing" func testInput(t *testing.T, ty int, s ...string) { for _, input := range s { yy := new(yySymType) l := lex(input + "\n") typ := l.Lex(yy) if input[0] == '\'' { input = input[1 : len(input)-1] } if typ != ty || yy.sval != input { t.Error("expeced", input, "got", yy.sval) } } } func TestInteger(t *testing.T) { testInput(t, INTEGER, "1", "¯1", "123") } func TestFloat(t *testing.T) { testInput(t, FLOAT, "1.120", "¯1.1", "1e1", "¯1.1e¯1") } func TestComplex(t *testing.T) { testInput(t, COMPLEX, "1.1J1", "¯1J1", "1J¯1.1", "¯1.1e1J¯1") } func TestString(t *testing.T) { testInput(t, STRING, "abc", "abc xyz") } func TestQuoted(t *testing.T) { testInput(t, QUOTED, "'abc'", "'abc''xyz'") }