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}