summaryrefslogtreecommitdiff
path: root/decode_scan_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'decode_scan_test.go')
-rw-r--r--decode_scan_test.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/decode_scan_test.go b/decode_scan_test.go
index 17c40d5..ee532c2 100644
--- a/decode_scan_test.go
+++ b/decode_scan_test.go
@@ -122,6 +122,32 @@ func TestRuneTypeScanner(t *testing.T) {
{0, 0, jsonparse.RuneTypeEOF, nil},
}},
"tail-ws": {`{"foo": 12.0} `, ``, []ReadRuneTypeResult{
+ // Disable auto-child.
+ {0, pushReadBarrier, 0, nil},
+ {0, popReadBarrier, 0, nil},
+ // Test main.
+ {'{', 1, jsonparse.RuneTypeObjectBeg, nil},
+ {'"', 1, jsonparse.RuneTypeStringBeg, nil},
+ {'f', 1, jsonparse.RuneTypeStringChar, nil},
+ {'o', 1, jsonparse.RuneTypeStringChar, nil},
+ {'o', 1, jsonparse.RuneTypeStringChar, nil},
+ {'"', 1, jsonparse.RuneTypeStringEnd, nil},
+ {':', 1, jsonparse.RuneTypeObjectColon, nil},
+ {'1', 1, jsonparse.RuneTypeNumberIntDig, nil},
+ {'2', 1, jsonparse.RuneTypeNumberIntDig, nil},
+ {'.', 1, jsonparse.RuneTypeNumberFracDot, nil},
+ {'0', 1, jsonparse.RuneTypeNumberFracDig, nil},
+ {'}', 1, jsonparse.RuneTypeObjectEnd, nil},
+ {0, 0, jsonparse.RuneTypeEOF, nil},
+ {0, 0, jsonparse.RuneTypeEOF, nil},
+ }},
+ "child-tail-ws": {`[1,` + `{"foo": 12.0} `, ` `, []ReadRuneTypeResult{
+ // Child prefix.
+ {'[', 1, jsonparse.RuneTypeArrayBeg, nil},
+ {'1', 1, jsonparse.RuneTypeNumberIntDig, nil},
+ {',', 1, jsonparse.RuneTypeArrayComma, nil},
+ {0, pushReadBarrier, 0, nil},
+ // Test main.
{'{', 1, jsonparse.RuneTypeObjectBeg, nil},
{'"', 1, jsonparse.RuneTypeStringBeg, nil},
{'f', 1, jsonparse.RuneTypeStringChar, nil},
@@ -213,6 +239,36 @@ func TestRuneTypeScanner(t *testing.T) {
{0, 0, jsonparse.RuneTypeEOF, nil},
}},
"elem": {` { "foo" : 12.0 } `, ``, []ReadRuneTypeResult{
+ // Disable auto-child.
+ {0, pushReadBarrier, 0, nil},
+ {0, popReadBarrier, 0, nil},
+ // Test main.
+ {'{', 1, jsonparse.RuneTypeObjectBeg, nil},
+ {'"', 1, jsonparse.RuneTypeStringBeg, nil},
+ {'f', 1, jsonparse.RuneTypeStringChar, nil},
+ {'o', 1, jsonparse.RuneTypeStringChar, nil},
+ {'o', 1, jsonparse.RuneTypeStringChar, nil},
+ {'"', 1, jsonparse.RuneTypeStringEnd, nil},
+ {':', 1, jsonparse.RuneTypeObjectColon, nil},
+ {0, pushReadBarrier, 0, nil},
+ {'1', 1, jsonparse.RuneTypeNumberIntDig, nil},
+ {'2', 1, jsonparse.RuneTypeNumberIntDig, nil},
+ {'.', 1, jsonparse.RuneTypeNumberFracDot, nil},
+ {'0', 1, jsonparse.RuneTypeNumberFracDig, nil},
+ {0, 0, jsonparse.RuneTypeEOF, nil},
+ {0, 0, jsonparse.RuneTypeEOF, nil},
+ {0, popReadBarrier, 0, nil},
+ {'}', 1, jsonparse.RuneTypeObjectEnd, nil},
+ {0, 0, jsonparse.RuneTypeEOF, nil},
+ {0, 0, jsonparse.RuneTypeEOF, nil},
+ }},
+ "child-elem": {`[1,` + ` { "foo" : 12.0 } `, ` `, []ReadRuneTypeResult{
+ // Child prefix.
+ {'[', 1, jsonparse.RuneTypeArrayBeg, nil},
+ {'1', 1, jsonparse.RuneTypeNumberIntDig, nil},
+ {',', 1, jsonparse.RuneTypeArrayComma, nil},
+ {0, pushReadBarrier, 0, nil},
+ // Test main.
{'{', 1, jsonparse.RuneTypeObjectBeg, nil},
{'"', 1, jsonparse.RuneTypeStringBeg, nil},
{'f', 1, jsonparse.RuneTypeStringChar, nil},