diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2023-01-30 11:42:51 -0700 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2023-01-30 22:00:25 -0700 |
commit | bc1bacc410ddfa444c5bf0e56f33a7da440658ae (patch) | |
tree | 53d982348637d4f7e1ffffe89a69105ec350df6e /decode_scan_test.go | |
parent | 659114fee7c39f06c408135169f2848a881dfe5e (diff) |
decode: Inline noWsRuneTypeScanner into runeTypeScannerImpl
Diffstat (limited to 'decode_scan_test.go')
-rw-r--r-- | decode_scan_test.go | 113 |
1 files changed, 22 insertions, 91 deletions
diff --git a/decode_scan_test.go b/decode_scan_test.go index 6a430ab..5bf5e2a 100644 --- a/decode_scan_test.go +++ b/decode_scan_test.go @@ -69,7 +69,6 @@ func TestRuneTypeScanner(t *testing.T) { {'o', 1, internal.RuneTypeStringChar, nil}, {'"', 1, internal.RuneTypeStringEnd, nil}, {':', 1, internal.RuneTypeObjectColon, nil}, - {' ', 1, internal.RuneTypeSpace, nil}, {'1', 1, internal.RuneTypeNumberIntDig, nil}, {'2', 1, internal.RuneTypeNumberIntDig, nil}, {'.', 1, internal.RuneTypeNumberFracDot, nil}, @@ -86,7 +85,6 @@ func TestRuneTypeScanner(t *testing.T) { {'o', 1, internal.RuneTypeStringChar, nil}, {'"', 1, internal.RuneTypeStringEnd, nil}, {':', 1, internal.RuneTypeObjectColon, nil}, - {' ', 1, internal.RuneTypeSpace, nil}, {'1', 1, internal.RuneTypeNumberIntDig, nil}, {0, -1, 0, nil}, {'1', 1, internal.RuneTypeNumberIntDig, nil}, @@ -105,7 +103,6 @@ func TestRuneTypeScanner(t *testing.T) { {'o', 1, internal.RuneTypeStringChar, nil}, {'"', 1, internal.RuneTypeStringEnd, nil}, {':', 1, internal.RuneTypeObjectColon, nil}, - {' ', 1, internal.RuneTypeSpace, nil}, {'1', 1, internal.RuneTypeNumberIntDig, nil}, {0, -1, 0, nil}, {0, -1, 0, ErrInvalidUnreadRune}, @@ -125,7 +122,6 @@ func TestRuneTypeScanner(t *testing.T) { {'o', 1, internal.RuneTypeStringChar, nil}, {'"', 1, internal.RuneTypeStringEnd, nil}, {':', 1, internal.RuneTypeObjectColon, nil}, - {' ', 1, internal.RuneTypeSpace, nil}, {'1', 1, internal.RuneTypeNumberIntDig, nil}, {'2', 1, internal.RuneTypeNumberIntDig, nil}, {'.', 1, internal.RuneTypeNumberFracDot, nil}, @@ -136,44 +132,7 @@ func TestRuneTypeScanner(t *testing.T) { {0, 0, internal.RuneTypeEOF, nil}, {0, 0, internal.RuneTypeEOF, nil}, }}, - "syntax-error": {`[[0,]`, ``, []ReadRuneTypeResult{ - {'[', 1, internal.RuneTypeArrayBeg, nil}, - {'[', 1, internal.RuneTypeArrayBeg, nil}, - {'0', 1, internal.RuneTypeNumberIntZero, nil}, - {',', 1, internal.RuneTypeArrayComma, nil}, - {']', 1, internal.RuneTypeError, &DecodeSyntaxError{Offset: 4, Err: fmt.Errorf("invalid character %q looking for beginning of value", ']')}}, - {']', 1, internal.RuneTypeError, &DecodeSyntaxError{Offset: 4, Err: fmt.Errorf("invalid character %q looking for beginning of value", ']')}}, - {']', 1, internal.RuneTypeError, &DecodeSyntaxError{Offset: 4, Err: fmt.Errorf("invalid character %q looking for beginning of value", ']')}}, - }}, - "multi-value": {`1{}`, `}`, []ReadRuneTypeResult{ - {'1', 1, internal.RuneTypeNumberIntDig, nil}, - {'{', 1, internal.RuneTypeEOF, nil}, - {'{', 1, internal.RuneTypeEOF, nil}, - {'{', 1, internal.RuneTypeEOF, nil}, - }}, - "early-eof": {`{`, ``, []ReadRuneTypeResult{ - {'{', 1, internal.RuneTypeObjectBeg, nil}, - {0, 0, internal.RuneTypeError, &DecodeSyntaxError{Offset: 1, Err: io.ErrUnexpectedEOF}}, - {0, 0, internal.RuneTypeError, &DecodeSyntaxError{Offset: 1, Err: io.ErrUnexpectedEOF}}, - {0, 0, internal.RuneTypeError, &DecodeSyntaxError{Offset: 1, Err: io.ErrUnexpectedEOF}}, - }}, - "empty": {``, ``, []ReadRuneTypeResult{ - {0, 0, internal.RuneTypeError, &DecodeSyntaxError{Offset: 0, Err: io.EOF}}, - {0, 0, internal.RuneTypeError, &DecodeSyntaxError{Offset: 0, Err: io.EOF}}, - {0, 0, internal.RuneTypeError, &DecodeSyntaxError{Offset: 0, Err: io.EOF}}, - }}, - } - testRuneTypeScanner(t, testcases, func(reader io.RuneScanner) runeTypeScanner { - return &runeTypeScannerImpl{ - inner: reader, - } - }) -} - -func TestNoWSRuneTypeScanner(t *testing.T) { - t.Parallel() - testcases := map[string]runeTypeScannerTestcase{ - "basic": {`{"foo": 12.0}`, ``, []ReadRuneTypeResult{ + "tail-ws": {`{"foo": 12.0} `, ``, []ReadRuneTypeResult{ {'{', 1, internal.RuneTypeObjectBeg, nil}, {'"', 1, internal.RuneTypeStringBeg, nil}, {'f', 1, internal.RuneTypeStringChar, nil}, @@ -189,39 +148,14 @@ func TestNoWSRuneTypeScanner(t *testing.T) { {0, 0, internal.RuneTypeEOF, nil}, {0, 0, internal.RuneTypeEOF, nil}, }}, - "unread": {`{"foo": 12.0}`, ``, []ReadRuneTypeResult{ - {'{', 1, internal.RuneTypeObjectBeg, nil}, - {'"', 1, internal.RuneTypeStringBeg, nil}, - {'f', 1, internal.RuneTypeStringChar, nil}, - {'o', 1, internal.RuneTypeStringChar, nil}, - {'o', 1, internal.RuneTypeStringChar, nil}, - {'"', 1, internal.RuneTypeStringEnd, nil}, - {':', 1, internal.RuneTypeObjectColon, nil}, - {'1', 1, internal.RuneTypeNumberIntDig, nil}, - {0, -1, 0, nil}, - {'1', 1, internal.RuneTypeNumberIntDig, nil}, - {'2', 1, internal.RuneTypeNumberIntDig, nil}, - {'.', 1, internal.RuneTypeNumberFracDot, nil}, - {'0', 1, internal.RuneTypeNumberFracDig, nil}, - {'}', 1, internal.RuneTypeObjectEnd, nil}, - {0, 0, internal.RuneTypeEOF, nil}, - {0, 0, internal.RuneTypeEOF, nil}, - }}, - "tail": {`{"foo": 12.0} `, ``, []ReadRuneTypeResult{ - {'{', 1, internal.RuneTypeObjectBeg, nil}, - {'"', 1, internal.RuneTypeStringBeg, nil}, - {'f', 1, internal.RuneTypeStringChar, nil}, - {'o', 1, internal.RuneTypeStringChar, nil}, - {'o', 1, internal.RuneTypeStringChar, nil}, - {'"', 1, internal.RuneTypeStringEnd, nil}, - {':', 1, internal.RuneTypeObjectColon, nil}, - {'1', 1, internal.RuneTypeNumberIntDig, nil}, - {'2', 1, internal.RuneTypeNumberIntDig, nil}, - {'.', 1, internal.RuneTypeNumberFracDot, nil}, - {'0', 1, internal.RuneTypeNumberFracDig, nil}, - {'}', 1, internal.RuneTypeObjectEnd, nil}, - {0, 0, internal.RuneTypeEOF, nil}, - {0, 0, internal.RuneTypeEOF, nil}, + "syntax-error": {`[[0,]`, ``, []ReadRuneTypeResult{ + {'[', 1, internal.RuneTypeArrayBeg, nil}, + {'[', 1, internal.RuneTypeArrayBeg, nil}, + {'0', 1, internal.RuneTypeNumberIntZero, nil}, + {',', 1, internal.RuneTypeArrayComma, nil}, + {']', 1, internal.RuneTypeError, &DecodeSyntaxError{Offset: 4, Err: fmt.Errorf("invalid character %q looking for beginning of value", ']')}}, + {']', 1, internal.RuneTypeError, &DecodeSyntaxError{Offset: 4, Err: fmt.Errorf("invalid character %q looking for beginning of value", ']')}}, + {']', 1, internal.RuneTypeError, &DecodeSyntaxError{Offset: 4, Err: fmt.Errorf("invalid character %q looking for beginning of value", ']')}}, }}, "multi-value": {`1{}`, `}`, []ReadRuneTypeResult{ {'1', 1, internal.RuneTypeNumberIntDig, nil}, @@ -235,12 +169,15 @@ func TestNoWSRuneTypeScanner(t *testing.T) { {0, 0, internal.RuneTypeError, &DecodeSyntaxError{Offset: 2, Err: io.ErrUnexpectedEOF}}, {0, 0, internal.RuneTypeError, &DecodeSyntaxError{Offset: 2, Err: io.ErrUnexpectedEOF}}, }}, + "empty": {``, ``, []ReadRuneTypeResult{ + {0, 0, internal.RuneTypeError, &DecodeSyntaxError{Offset: 0, Err: io.EOF}}, + {0, 0, internal.RuneTypeError, &DecodeSyntaxError{Offset: 0, Err: io.EOF}}, + {0, 0, internal.RuneTypeError, &DecodeSyntaxError{Offset: 0, Err: io.EOF}}, + }}, } testRuneTypeScanner(t, testcases, func(reader io.RuneScanner) runeTypeScanner { - return &noWSRuneTypeScanner{ - inner: &runeTypeScannerImpl{ - inner: reader, - }, + return &runeTypeScannerImpl{ + inner: reader, } }) } @@ -301,10 +238,8 @@ func TestElemRuneTypeScanner(t *testing.T) { t.Parallel() testRuneTypeScanner(t, toplevelTestcases, func(reader io.RuneScanner) runeTypeScanner { return &elemRuneTypeScanner{ - inner: &noWSRuneTypeScanner{ - inner: &runeTypeScannerImpl{ - inner: reader, - }, + inner: &runeTypeScannerImpl{ + inner: reader, }, } }) @@ -312,10 +247,8 @@ func TestElemRuneTypeScanner(t *testing.T) { t.Run("child", func(t *testing.T) { t.Parallel() testRuneTypeScanner(t, childTestcases, func(reader io.RuneScanner) runeTypeScanner { - inner := &noWSRuneTypeScanner{ - inner: &runeTypeScannerImpl{ - inner: reader, - }, + inner := &runeTypeScannerImpl{ + inner: reader, } var res ReadRuneTypeResult res.r, res.s, res.t, res.e = inner.ReadRuneType() @@ -332,10 +265,8 @@ func TestElemRuneTypeScanner(t *testing.T) { func TestElemRuneTypeScanner2(t *testing.T) { t.Parallel() - parent := &noWSRuneTypeScanner{ - inner: &runeTypeScannerImpl{ - inner: strings.NewReader(` { "foo" : 12.0 } `), - }, + parent := &runeTypeScannerImpl{ + inner: strings.NewReader(` { "foo" : 12.0 } `), } exp := []ReadRuneTypeResult{ {'{', 1, internal.RuneTypeObjectBeg, nil}, |