From c28fd331cf6c3ea52f501c71ffba7d597f2c94c4 Mon Sep 17 00:00:00 2001 From: Prashanth Mundkur Date: Fri, 20 Mar 2009 15:09:45 -0700 Subject: [PATCH] [json] add parsing test suite from JSON_checker project. --- libs/json/tests/LICENSE.txt | 23 ++++++++++++++ libs/json/tests/README | 4 +++ libs/json/tests/fail1.json | 1 + libs/json/tests/fail10.json | 1 + libs/json/tests/fail11.json | 1 + libs/json/tests/fail12.json | 1 + libs/json/tests/fail13.json | 1 + libs/json/tests/fail14.json | 1 + libs/json/tests/fail15.json | 1 + libs/json/tests/fail16.json | 1 + libs/json/tests/fail17.json | 1 + libs/json/tests/fail18.json | 1 + libs/json/tests/fail19.json | 1 + libs/json/tests/fail2.json | 1 + libs/json/tests/fail20.json | 1 + libs/json/tests/fail21.json | 1 + libs/json/tests/fail22.json | 1 + libs/json/tests/fail23.json | 1 + libs/json/tests/fail24.json | 1 + libs/json/tests/fail25.json | 1 + libs/json/tests/fail26.json | 1 + libs/json/tests/fail27.json | 2 ++ libs/json/tests/fail28.json | 2 ++ libs/json/tests/fail29.json | 1 + libs/json/tests/fail3.json | 1 + libs/json/tests/fail30.json | 1 + libs/json/tests/fail31.json | 1 + libs/json/tests/fail32.json | 1 + libs/json/tests/fail33.json | 1 + libs/json/tests/fail4.json | 1 + libs/json/tests/fail5.json | 1 + libs/json/tests/fail6.json | 1 + libs/json/tests/fail7.json | 1 + libs/json/tests/fail8.json | 1 + libs/json/tests/fail9.json | 1 + libs/json/tests/pass1.json | 58 ++++++++++++++++++++++++++++++++++++ libs/json/tests/pass2.json | 1 + libs/json/tests/pass3.json | 6 ++++ libs/json/tests/run_tests.sh | 16 ++++++++++ 39 files changed, 143 insertions(+) create mode 100644 libs/json/tests/LICENSE.txt create mode 100644 libs/json/tests/README create mode 100644 libs/json/tests/fail1.json create mode 100644 libs/json/tests/fail10.json create mode 100644 libs/json/tests/fail11.json create mode 100644 libs/json/tests/fail12.json create mode 100644 libs/json/tests/fail13.json create mode 100644 libs/json/tests/fail14.json create mode 100644 libs/json/tests/fail15.json create mode 100644 libs/json/tests/fail16.json create mode 100644 libs/json/tests/fail17.json create mode 100644 libs/json/tests/fail18.json create mode 100644 libs/json/tests/fail19.json create mode 100644 libs/json/tests/fail2.json create mode 100644 libs/json/tests/fail20.json create mode 100644 libs/json/tests/fail21.json create mode 100644 libs/json/tests/fail22.json create mode 100644 libs/json/tests/fail23.json create mode 100644 libs/json/tests/fail24.json create mode 100644 libs/json/tests/fail25.json create mode 100644 libs/json/tests/fail26.json create mode 100644 libs/json/tests/fail27.json create mode 100644 libs/json/tests/fail28.json create mode 100644 libs/json/tests/fail29.json create mode 100644 libs/json/tests/fail3.json create mode 100644 libs/json/tests/fail30.json create mode 100644 libs/json/tests/fail31.json create mode 100644 libs/json/tests/fail32.json create mode 100644 libs/json/tests/fail33.json create mode 100644 libs/json/tests/fail4.json create mode 100644 libs/json/tests/fail5.json create mode 100644 libs/json/tests/fail6.json create mode 100644 libs/json/tests/fail7.json create mode 100644 libs/json/tests/fail8.json create mode 100644 libs/json/tests/fail9.json create mode 100644 libs/json/tests/pass1.json create mode 100644 libs/json/tests/pass2.json create mode 100644 libs/json/tests/pass3.json create mode 100755 libs/json/tests/run_tests.sh diff --git a/libs/json/tests/LICENSE.txt b/libs/json/tests/LICENSE.txt new file mode 100644 index 0000000..7d41935 --- /dev/null +++ b/libs/json/tests/LICENSE.txt @@ -0,0 +1,23 @@ +/* +Copyright (c) 2005 JSON.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +The Software shall be used for Good, not Evil. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ diff --git a/libs/json/tests/README b/libs/json/tests/README new file mode 100644 index 0000000..a4892e1 --- /dev/null +++ b/libs/json/tests/README @@ -0,0 +1,4 @@ +The .json files in this directory are taken from the JSON_checker +project [1], and are covered by the license in LICENSE.txt. + +[1] http://www.json.org/JSON_checker/ diff --git a/libs/json/tests/fail1.json b/libs/json/tests/fail1.json new file mode 100644 index 0000000..6216b86 --- /dev/null +++ b/libs/json/tests/fail1.json @@ -0,0 +1 @@ +"A JSON payload should be an object or array, not a string." \ No newline at end of file diff --git a/libs/json/tests/fail10.json b/libs/json/tests/fail10.json new file mode 100644 index 0000000..5d8c004 --- /dev/null +++ b/libs/json/tests/fail10.json @@ -0,0 +1 @@ +{"Extra value after close": true} "misplaced quoted value" \ No newline at end of file diff --git a/libs/json/tests/fail11.json b/libs/json/tests/fail11.json new file mode 100644 index 0000000..76eb95b --- /dev/null +++ b/libs/json/tests/fail11.json @@ -0,0 +1 @@ +{"Illegal expression": 1 + 2} \ No newline at end of file diff --git a/libs/json/tests/fail12.json b/libs/json/tests/fail12.json new file mode 100644 index 0000000..77580a4 --- /dev/null +++ b/libs/json/tests/fail12.json @@ -0,0 +1 @@ +{"Illegal invocation": alert()} \ No newline at end of file diff --git a/libs/json/tests/fail13.json b/libs/json/tests/fail13.json new file mode 100644 index 0000000..379406b --- /dev/null +++ b/libs/json/tests/fail13.json @@ -0,0 +1 @@ +{"Numbers cannot have leading zeroes": 013} \ No newline at end of file diff --git a/libs/json/tests/fail14.json b/libs/json/tests/fail14.json new file mode 100644 index 0000000..0ed366b --- /dev/null +++ b/libs/json/tests/fail14.json @@ -0,0 +1 @@ +{"Numbers cannot be hex": 0x14} \ No newline at end of file diff --git a/libs/json/tests/fail15.json b/libs/json/tests/fail15.json new file mode 100644 index 0000000..fc8376b --- /dev/null +++ b/libs/json/tests/fail15.json @@ -0,0 +1 @@ +["Illegal backslash escape: \x15"] \ No newline at end of file diff --git a/libs/json/tests/fail16.json b/libs/json/tests/fail16.json new file mode 100644 index 0000000..3fe21d4 --- /dev/null +++ b/libs/json/tests/fail16.json @@ -0,0 +1 @@ +[\naked] \ No newline at end of file diff --git a/libs/json/tests/fail17.json b/libs/json/tests/fail17.json new file mode 100644 index 0000000..62b9214 --- /dev/null +++ b/libs/json/tests/fail17.json @@ -0,0 +1 @@ +["Illegal backslash escape: \017"] \ No newline at end of file diff --git a/libs/json/tests/fail18.json b/libs/json/tests/fail18.json new file mode 100644 index 0000000..edac927 --- /dev/null +++ b/libs/json/tests/fail18.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/libs/json/tests/fail19.json b/libs/json/tests/fail19.json new file mode 100644 index 0000000..3b9c46f --- /dev/null +++ b/libs/json/tests/fail19.json @@ -0,0 +1 @@ +{"Missing colon" null} \ No newline at end of file diff --git a/libs/json/tests/fail2.json b/libs/json/tests/fail2.json new file mode 100644 index 0000000..6b7c11e --- /dev/null +++ b/libs/json/tests/fail2.json @@ -0,0 +1 @@ +["Unclosed array" \ No newline at end of file diff --git a/libs/json/tests/fail20.json b/libs/json/tests/fail20.json new file mode 100644 index 0000000..27c1af3 --- /dev/null +++ b/libs/json/tests/fail20.json @@ -0,0 +1 @@ +{"Double colon":: null} \ No newline at end of file diff --git a/libs/json/tests/fail21.json b/libs/json/tests/fail21.json new file mode 100644 index 0000000..6247457 --- /dev/null +++ b/libs/json/tests/fail21.json @@ -0,0 +1 @@ +{"Comma instead of colon", null} \ No newline at end of file diff --git a/libs/json/tests/fail22.json b/libs/json/tests/fail22.json new file mode 100644 index 0000000..a775258 --- /dev/null +++ b/libs/json/tests/fail22.json @@ -0,0 +1 @@ +["Colon instead of comma": false] \ No newline at end of file diff --git a/libs/json/tests/fail23.json b/libs/json/tests/fail23.json new file mode 100644 index 0000000..494add1 --- /dev/null +++ b/libs/json/tests/fail23.json @@ -0,0 +1 @@ +["Bad value", truth] \ No newline at end of file diff --git a/libs/json/tests/fail24.json b/libs/json/tests/fail24.json new file mode 100644 index 0000000..caff239 --- /dev/null +++ b/libs/json/tests/fail24.json @@ -0,0 +1 @@ +['single quote'] \ No newline at end of file diff --git a/libs/json/tests/fail25.json b/libs/json/tests/fail25.json new file mode 100644 index 0000000..8b7ad23 --- /dev/null +++ b/libs/json/tests/fail25.json @@ -0,0 +1 @@ +[" tab character in string "] \ No newline at end of file diff --git a/libs/json/tests/fail26.json b/libs/json/tests/fail26.json new file mode 100644 index 0000000..845d26a --- /dev/null +++ b/libs/json/tests/fail26.json @@ -0,0 +1 @@ +["tab\ character\ in\ string\ "] \ No newline at end of file diff --git a/libs/json/tests/fail27.json b/libs/json/tests/fail27.json new file mode 100644 index 0000000..6b01a2c --- /dev/null +++ b/libs/json/tests/fail27.json @@ -0,0 +1,2 @@ +["line +break"] \ No newline at end of file diff --git a/libs/json/tests/fail28.json b/libs/json/tests/fail28.json new file mode 100644 index 0000000..621a010 --- /dev/null +++ b/libs/json/tests/fail28.json @@ -0,0 +1,2 @@ +["line\ +break"] \ No newline at end of file diff --git a/libs/json/tests/fail29.json b/libs/json/tests/fail29.json new file mode 100644 index 0000000..47ec421 --- /dev/null +++ b/libs/json/tests/fail29.json @@ -0,0 +1 @@ +[0e] \ No newline at end of file diff --git a/libs/json/tests/fail3.json b/libs/json/tests/fail3.json new file mode 100644 index 0000000..168c81e --- /dev/null +++ b/libs/json/tests/fail3.json @@ -0,0 +1 @@ +{unquoted_key: "keys must be quoted"} \ No newline at end of file diff --git a/libs/json/tests/fail30.json b/libs/json/tests/fail30.json new file mode 100644 index 0000000..8ab0bc4 --- /dev/null +++ b/libs/json/tests/fail30.json @@ -0,0 +1 @@ +[0e+] \ No newline at end of file diff --git a/libs/json/tests/fail31.json b/libs/json/tests/fail31.json new file mode 100644 index 0000000..1cce602 --- /dev/null +++ b/libs/json/tests/fail31.json @@ -0,0 +1 @@ +[0e+-1] \ No newline at end of file diff --git a/libs/json/tests/fail32.json b/libs/json/tests/fail32.json new file mode 100644 index 0000000..45cba73 --- /dev/null +++ b/libs/json/tests/fail32.json @@ -0,0 +1 @@ +{"Comma instead if closing brace": true, \ No newline at end of file diff --git a/libs/json/tests/fail33.json b/libs/json/tests/fail33.json new file mode 100644 index 0000000..ca5eb19 --- /dev/null +++ b/libs/json/tests/fail33.json @@ -0,0 +1 @@ +["mismatch"} \ No newline at end of file diff --git a/libs/json/tests/fail4.json b/libs/json/tests/fail4.json new file mode 100644 index 0000000..9de168b --- /dev/null +++ b/libs/json/tests/fail4.json @@ -0,0 +1 @@ +["extra comma",] \ No newline at end of file diff --git a/libs/json/tests/fail5.json b/libs/json/tests/fail5.json new file mode 100644 index 0000000..ddf3ce3 --- /dev/null +++ b/libs/json/tests/fail5.json @@ -0,0 +1 @@ +["double extra comma",,] \ No newline at end of file diff --git a/libs/json/tests/fail6.json b/libs/json/tests/fail6.json new file mode 100644 index 0000000..ed91580 --- /dev/null +++ b/libs/json/tests/fail6.json @@ -0,0 +1 @@ +[ , "<-- missing value"] \ No newline at end of file diff --git a/libs/json/tests/fail7.json b/libs/json/tests/fail7.json new file mode 100644 index 0000000..8a96af3 --- /dev/null +++ b/libs/json/tests/fail7.json @@ -0,0 +1 @@ +["Comma after the close"], \ No newline at end of file diff --git a/libs/json/tests/fail8.json b/libs/json/tests/fail8.json new file mode 100644 index 0000000..b28479c --- /dev/null +++ b/libs/json/tests/fail8.json @@ -0,0 +1 @@ +["Extra close"]] \ No newline at end of file diff --git a/libs/json/tests/fail9.json b/libs/json/tests/fail9.json new file mode 100644 index 0000000..5815574 --- /dev/null +++ b/libs/json/tests/fail9.json @@ -0,0 +1 @@ +{"Extra comma": true,} \ No newline at end of file diff --git a/libs/json/tests/pass1.json b/libs/json/tests/pass1.json new file mode 100644 index 0000000..70e2685 --- /dev/null +++ b/libs/json/tests/pass1.json @@ -0,0 +1,58 @@ +[ + "JSON Test Pattern pass1", + {"object with 1 member":["array with 1 element"]}, + {}, + [], + -42, + true, + false, + null, + { + "integer": 1234567890, + "real": -9876.543210, + "e": 0.123456789e-12, + "E": 1.234567890E+34, + "": 23456789012E66, + "zero": 0, + "one": 1, + "space": " ", + "quote": "\"", + "backslash": "\\", + "controls": "\b\f\n\r\t", + "slash": "/ & \/", + "alpha": "abcdefghijklmnopqrstuvwyz", + "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ", + "digit": "0123456789", + "0123456789": "digit", + "special": "`1~!@#$%^&*()_+-={':[,]}|;.?", + "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A", + "true": true, + "false": false, + "null": null, + "array":[ ], + "object":{ }, + "address": "50 St. James Street", + "url": "http://www.JSON.org/", + "comment": "// /* */": " ", + " s p a c e d " :[1,2 , 3 + +, + +4 , 5 , 6 ,7 ],"compact":[1,2,3,4,5,6,7], + "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}", + "quotes": "" \u0022 %22 0x22 034 "", + "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?" +: "A key can be any string" + }, + 0.5 ,98.6 +, +99.44 +, + +1066, +1e1, +0.1e1, +1e-1, +1e00,2e+00,2e-00 +,"rosebud"] \ No newline at end of file diff --git a/libs/json/tests/pass2.json b/libs/json/tests/pass2.json new file mode 100644 index 0000000..d3c63c7 --- /dev/null +++ b/libs/json/tests/pass2.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/libs/json/tests/pass3.json b/libs/json/tests/pass3.json new file mode 100644 index 0000000..4528d51 --- /dev/null +++ b/libs/json/tests/pass3.json @@ -0,0 +1,6 @@ +{ + "JSON Test Pattern pass3": { + "The outermost value": "must be an object or array.", + "In this test": "It is an object." + } +} diff --git a/libs/json/tests/run_tests.sh b/libs/json/tests/run_tests.sh new file mode 100755 index 0000000..ba1712e --- /dev/null +++ b/libs/json/tests/run_tests.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +PROG=../json_test + +for f in `ls *pass*.json`; do + $PROG $f > /dev/null 2>&1 + if [ $? -ne 0 ] ; then + echo Test case $f should pass, but failed. + fi +done +for f in `ls *fail*.json`; do + $PROG $f > /dev/null 2>&1 + if [ $? -eq 0 ] ; then + echo Test case $f should fail, but passed. + fi +done -- 2.39.5