diff options
author | Petri Lehtinen <petri@digip.org> | 2009-09-08 16:32:47 +0300 |
---|---|---|
committer | Petri Lehtinen <petri@digip.org> | 2009-09-08 17:03:01 +0300 |
commit | 04d550b02e8eadc0c9fb1966fe42fe9fc25f89e0 (patch) | |
tree | 980cac6c36c3b1f40a69ff36727fb35e1f302216 /test/testdata | |
parent | 55d25665395551e711fa7d971cf76c8acf0b17f1 (diff) | |
download | jansson-04d550b02e8eadc0c9fb1966fe42fe9fc25f89e0.zip jansson-04d550b02e8eadc0c9fb1966fe42fe9fc25f89e0.tar.gz jansson-04d550b02e8eadc0c9fb1966fe42fe9fc25f89e0.tar.bz2 |
Add stripped unit tests for decoder
That is, test cases where there's no newline or other whitespace at
the beginning or end of input. This was implemented by adding a
--strip option to split-testfile to strip the input file after writing
it.
The actual test JSON texts are the same as testdata/invalid and
testdata/valid. The expected output of the invalid cases had to be
adjusted a bit: because there's no newline at the end, some of the
line numbers needed to be changed.
Diffstat (limited to 'test/testdata')
-rw-r--r-- | test/testdata/invalid-strip | 195 | ||||
-rw-r--r-- | test/testdata/valid-strip | 68 |
2 files changed, 263 insertions, 0 deletions
diff --git a/test/testdata/invalid-strip b/test/testdata/invalid-strip new file mode 100644 index 0000000..18e40ae --- /dev/null +++ b/test/testdata/invalid-strip @@ -0,0 +1,195 @@ +==== empty ==== +==== +1 +'[' or '{' expected near end of file +==== null ==== +null +==== +1 +'[' or '{' expected near 'null' +==== lone-open-brace ==== +{ +==== +1 +string or '}' expected near end of file +==== lone-open-bracket ==== +[ +==== +1 +']' expected near end of file +==== bracket-comma ==== +[, +==== +1 +unexpected token near ',' +==== bracket-one-comma ==== +[1, +==== +1 +']' expected near end of file +==== unterminated-string ==== +["a +==== +1 +premature end of input near '"a' +==== unterminated-array ==== +["a" +==== +1 +']' expected near end of file +==== apostrophe ==== +[' +==== +1 +invalid token near ''' +==== brace-comma ==== +{, +==== +1 +string or '}' expected near ',' +==== unterminated-empty-key ==== +{" +==== +1 +premature end of input near '"' +==== unterminated-key ==== +{"a +==== +1 +premature end of input near '"a' +==== object-no-colon ==== +{"a" +==== +1 +':' expected near end of file +==== object-apostrophes ==== +{'a' +==== +1 +string or '}' expected near ''' +==== object-no-value ==== +{"a": +==== +1 +unexpected token near end of file +==== object-unterminated-value ==== +{"a":"a +==== +1 +premature end of input near '"a' +==== object-garbage-at-end ==== +{"a":"a" 123} +==== +1 +'}' expected near '123' +==== unterminated-object-and-array ==== +{[ +==== +1 +string or '}' expected near '[' +==== unterminated-array-and-object ==== +[{ +==== +1 +string or '}' expected near end of file +==== object-in-unterminated-array ==== +[{} +==== +1 +']' expected near end of file +==== extra-comma-in-array ==== +[1,] +==== +1 +unexpected token near ']' +==== extra-command-in-multiline-array ==== +[1, +2, +3, +4, +5, +] +==== +6 +unexpected token near ']' +==== real-truncated-at-point ==== +[1.] +==== +1 +invalid token near '1.' +==== real-truncated-at-e ==== +[1e] +==== +1 +invalid token near '1e' +==== real-garbage-after-e ==== +[1ea] +==== +1 +invalid token near '1e' +==== integer-starting-with-zero ==== +[012] +==== +1 +invalid token near '0' +==== negative-integer-starting-with-zero ==== +[-012] +==== +1 +invalid token near '-0' +==== invalid-identifier ==== +[troo +==== +1 +invalid token near 'troo' +==== invalid-escap ==== +["\a <-- invalid escape"] +==== +1 +invalid escape near '"\' +==== tab-character-in-string ==== +[" <-- tab character"] +==== +1 +control character 0x9 near '"' +==== null-byte-in-string ==== +["\u0000 (null byte not allowed)"] +==== +1 +\u0000 is not allowed +==== truncated-unicode-surrogate ==== +["\uDADA (first surrogate without the second)"] +==== +1 +invalid Unicode '\uDADA' +==== invalid-second-surrogate ==== +["\uD888\u3210 (first surrogate and invalid second surrogate)"] +==== +1 +invalid Unicode '\uD888\u3210' +==== lone-second-surrogate ==== +["\uDFAA (second surrogate on it's own)"] +==== +1 +invalid Unicode '\uDFAA' +==== unicode-identifier ==== +å +==== +1 +'[' or '{' expected near 'å' +==== ascii-unicode-identifier ==== +aå +==== +1 +'[' or '{' expected near 'a' +==== garbage-at-the-end ==== +[1,2,3]foo +==== +1 +end of file expected near 'foo' +==== garbage-after-newline ==== +[1,2,3] +foo +==== +2 +end of file expected near 'foo' diff --git a/test/testdata/valid-strip b/test/testdata/valid-strip new file mode 100644 index 0000000..50cfc63 --- /dev/null +++ b/test/testdata/valid-strip @@ -0,0 +1,68 @@ +==== empty-string ==== +[""] +==== short-string ==== +["a"] +==== simple-ascii-string ==== +["abcdefghijklmnopqrstuvwxyz1234567890 "] +==== utf-8-string ==== +["€þıœəßð some utf-8 ĸʒ×ŋµåäö𝄞"] +==== string-escapes ==== +["\"\\\/\b\f\n\r\t"] +==== one-byte-utf-8 ==== +["\u002c one-byte UTF-8"] +==== two-byte-utf-8 ==== +["\u0123 two-byte UTF-8"] +==== three-byte-utf-8 ==== +["\u0821 three-byte UTF-8"] +==== utf-surrogate-four-byte-encoding ==== +["\uD834\uDD1E surrogate, four-byte UTF-8"] +==== escaped-utf-control-char ==== +["\u0012 escaped control character"] +==== simple-int-0 ==== +[0] +==== simple-int-1 ==== +[1] +==== simple-int-123 ==== +[123] +==== negative-zero ==== +[-0] +==== negative-one ==== +[-1] +==== negative-int ==== +[-123] +==== simple-real ==== +[123.456789] +==== real-exponent ==== +[123e45] +==== real-capital-e ==== +[1E22] +==== real-positive-exponent ==== +[1e+2] +==== real-negative-exponent ==== +[1e-2] +==== real-capital-e-positive-exponent ==== +[1E+2] +==== real-capital-e-negative-exponent ==== +[1E-2] +==== real-fraction-exponent ==== +[123.456e78] +==== true ==== +[true] +==== false ==== +[false] +==== null ==== +[null] +==== empty-array ==== +[] +==== empty-object-in-array ==== +[{}] +==== complex-array ==== +[1,2,3,4, +"a", "b", "c", +{"foo": "bar", "core": "dump"}, +true, false, true, true, null, false +] +==== empty-object ==== +{} +==== simple-object ==== +{"a":[]} |