parser_test.gno

1.32 Kb ยท 66 lines
 1package json
 2
 3import "testing"
 4
 5func TestParseStringLiteral(t *testing.T) {
 6	tests := []struct {
 7		input    string
 8		expected string
 9		isError  bool
10	}{
11		{`"Hello, World!"`, "\"Hello, World!\"", false},
12		{`\uFF11`, "\uFF11", false},
13		{`\uFFFF`, "\uFFFF", false},
14		{`true`, "true", false},
15		{`false`, "false", false},
16		{`\uDF00`, "", true},
17	}
18
19	for i, tt := range tests {
20		s, err := ParseStringLiteral([]byte(tt.input))
21
22		if !tt.isError && err != nil {
23			t.Errorf("%d. unexpected error: %s", i, err)
24		}
25
26		if tt.isError && err == nil {
27			t.Errorf("%d. expected error, but not error", i)
28		}
29
30		if s != tt.expected {
31			t.Errorf("%d. expected=%s, but actual=%s", i, tt.expected, s)
32		}
33	}
34}
35
36func TestParseBoolLiteral(t *testing.T) {
37	tests := []struct {
38		input    string
39		expected bool
40		isError  bool
41	}{
42		{`true`, true, false},
43		{`false`, false, false},
44		{`TRUE`, false, true},
45		{`FALSE`, false, true},
46		{`foo`, false, true},
47		{`"true"`, false, true},
48		{`"false"`, false, true},
49	}
50
51	for i, tt := range tests {
52		b, err := ParseBoolLiteral([]byte(tt.input))
53
54		if !tt.isError && err != nil {
55			t.Errorf("%d. unexpected error: %s", i, err)
56		}
57
58		if tt.isError && err == nil {
59			t.Errorf("%d. expected error, but not error", i)
60		}
61
62		if b != tt.expected {
63			t.Errorf("%d. expected=%t, but actual=%t", i, tt.expected, b)
64		}
65	}
66}