From 89ad754e8649e6a0f18e1616a0bb97a39c95c090 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Sat, 5 Mar 2016 20:48:20 +0000 Subject: [PATCH] tests: Add extra tests for util.json --- Makefile | 1 + tests/json/fail1.json | 1 + tests/json/fail10.json | 1 + tests/json/fail11.json | 1 + tests/json/fail12.json | 1 + tests/json/fail13.json | 1 + tests/json/fail14.json | 1 + tests/json/fail15.json | 1 + tests/json/fail16.json | 1 + tests/json/fail17.json | 1 + tests/json/fail18.json | 1 + tests/json/fail19.json | 1 + tests/json/fail2.json | 1 + tests/json/fail20.json | 1 + tests/json/fail21.json | 1 + tests/json/fail22.json | 1 + tests/json/fail23.json | 1 + tests/json/fail24.json | 1 + tests/json/fail25.json | 1 + tests/json/fail26.json | 1 + tests/json/fail27.json | 2 ++ tests/json/fail28.json | 2 ++ tests/json/fail29.json | 1 + tests/json/fail3.json | 1 + tests/json/fail30.json | 1 + tests/json/fail31.json | 1 + tests/json/fail32.json | 1 + tests/json/fail33.json | 1 + tests/json/fail4.json | 1 + tests/json/fail5.json | 1 + tests/json/fail6.json | 1 + tests/json/fail7.json | 1 + tests/json/fail8.json | 1 + tests/json/fail9.json | 1 + tests/json/pass1.json | 58 +++++++++++++++++++++++++++++++++++++++++ tests/json/pass2.json | 1 + tests/json/pass3.json | 6 +++++ tests/test_util_json.sh | 39 +++++++++++++++++++++++++++ 38 files changed, 140 insertions(+) create mode 100644 tests/json/fail1.json create mode 100644 tests/json/fail10.json create mode 100644 tests/json/fail11.json create mode 100644 tests/json/fail12.json create mode 100644 tests/json/fail13.json create mode 100644 tests/json/fail14.json create mode 100644 tests/json/fail15.json create mode 100644 tests/json/fail16.json create mode 100644 tests/json/fail17.json create mode 100644 tests/json/fail18.json create mode 100644 tests/json/fail19.json create mode 100644 tests/json/fail2.json create mode 100644 tests/json/fail20.json create mode 100644 tests/json/fail21.json create mode 100644 tests/json/fail22.json create mode 100644 tests/json/fail23.json create mode 100644 tests/json/fail24.json create mode 100644 tests/json/fail25.json create mode 100644 tests/json/fail26.json create mode 100644 tests/json/fail27.json create mode 100644 tests/json/fail28.json create mode 100644 tests/json/fail29.json create mode 100644 tests/json/fail3.json create mode 100644 tests/json/fail30.json create mode 100644 tests/json/fail31.json create mode 100644 tests/json/fail32.json create mode 100644 tests/json/fail33.json create mode 100644 tests/json/fail4.json create mode 100644 tests/json/fail5.json create mode 100644 tests/json/fail6.json create mode 100644 tests/json/fail7.json create mode 100644 tests/json/fail8.json create mode 100644 tests/json/fail9.json create mode 100644 tests/json/pass1.json create mode 100644 tests/json/pass2.json create mode 100644 tests/json/pass3.json create mode 100755 tests/test_util_json.sh diff --git a/Makefile b/Makefile index a5cdbb37..06e67c9c 100644 --- a/Makefile +++ b/Makefile @@ -54,6 +54,7 @@ clean: test: cd tests && $(RUNWITH) test.lua 0 + # Skipping: cd tests && RUNWITH=$(RUNWITH) ./test_util_json.sh util/%.so: $(MAKE) install -C util-src diff --git a/tests/json/fail1.json b/tests/json/fail1.json new file mode 100644 index 00000000..6216b865 --- /dev/null +++ b/tests/json/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/tests/json/fail10.json b/tests/json/fail10.json new file mode 100644 index 00000000..5d8c0047 --- /dev/null +++ b/tests/json/fail10.json @@ -0,0 +1 @@ +{"Extra value after close": true} "misplaced quoted value" \ No newline at end of file diff --git a/tests/json/fail11.json b/tests/json/fail11.json new file mode 100644 index 00000000..76eb95b4 --- /dev/null +++ b/tests/json/fail11.json @@ -0,0 +1 @@ +{"Illegal expression": 1 + 2} \ No newline at end of file diff --git a/tests/json/fail12.json b/tests/json/fail12.json new file mode 100644 index 00000000..77580a45 --- /dev/null +++ b/tests/json/fail12.json @@ -0,0 +1 @@ +{"Illegal invocation": alert()} \ No newline at end of file diff --git a/tests/json/fail13.json b/tests/json/fail13.json new file mode 100644 index 00000000..379406b5 --- /dev/null +++ b/tests/json/fail13.json @@ -0,0 +1 @@ +{"Numbers cannot have leading zeroes": 013} \ No newline at end of file diff --git a/tests/json/fail14.json b/tests/json/fail14.json new file mode 100644 index 00000000..0ed366b3 --- /dev/null +++ b/tests/json/fail14.json @@ -0,0 +1 @@ +{"Numbers cannot be hex": 0x14} \ No newline at end of file diff --git a/tests/json/fail15.json b/tests/json/fail15.json new file mode 100644 index 00000000..fc8376b6 --- /dev/null +++ b/tests/json/fail15.json @@ -0,0 +1 @@ +["Illegal backslash escape: \x15"] \ No newline at end of file diff --git a/tests/json/fail16.json b/tests/json/fail16.json new file mode 100644 index 00000000..3fe21d4b --- /dev/null +++ b/tests/json/fail16.json @@ -0,0 +1 @@ +[\naked] \ No newline at end of file diff --git a/tests/json/fail17.json b/tests/json/fail17.json new file mode 100644 index 00000000..62b9214a --- /dev/null +++ b/tests/json/fail17.json @@ -0,0 +1 @@ +["Illegal backslash escape: \017"] \ No newline at end of file diff --git a/tests/json/fail18.json b/tests/json/fail18.json new file mode 100644 index 00000000..edac9271 --- /dev/null +++ b/tests/json/fail18.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/tests/json/fail19.json b/tests/json/fail19.json new file mode 100644 index 00000000..3b9c46fa --- /dev/null +++ b/tests/json/fail19.json @@ -0,0 +1 @@ +{"Missing colon" null} \ No newline at end of file diff --git a/tests/json/fail2.json b/tests/json/fail2.json new file mode 100644 index 00000000..6b7c11e5 --- /dev/null +++ b/tests/json/fail2.json @@ -0,0 +1 @@ +["Unclosed array" \ No newline at end of file diff --git a/tests/json/fail20.json b/tests/json/fail20.json new file mode 100644 index 00000000..27c1af3e --- /dev/null +++ b/tests/json/fail20.json @@ -0,0 +1 @@ +{"Double colon":: null} \ No newline at end of file diff --git a/tests/json/fail21.json b/tests/json/fail21.json new file mode 100644 index 00000000..62474573 --- /dev/null +++ b/tests/json/fail21.json @@ -0,0 +1 @@ +{"Comma instead of colon", null} \ No newline at end of file diff --git a/tests/json/fail22.json b/tests/json/fail22.json new file mode 100644 index 00000000..a7752581 --- /dev/null +++ b/tests/json/fail22.json @@ -0,0 +1 @@ +["Colon instead of comma": false] \ No newline at end of file diff --git a/tests/json/fail23.json b/tests/json/fail23.json new file mode 100644 index 00000000..494add1c --- /dev/null +++ b/tests/json/fail23.json @@ -0,0 +1 @@ +["Bad value", truth] \ No newline at end of file diff --git a/tests/json/fail24.json b/tests/json/fail24.json new file mode 100644 index 00000000..caff239b --- /dev/null +++ b/tests/json/fail24.json @@ -0,0 +1 @@ +['single quote'] \ No newline at end of file diff --git a/tests/json/fail25.json b/tests/json/fail25.json new file mode 100644 index 00000000..8b7ad23e --- /dev/null +++ b/tests/json/fail25.json @@ -0,0 +1 @@ +[" tab character in string "] \ No newline at end of file diff --git a/tests/json/fail26.json b/tests/json/fail26.json new file mode 100644 index 00000000..845d26a6 --- /dev/null +++ b/tests/json/fail26.json @@ -0,0 +1 @@ +["tab\ character\ in\ string\ "] \ No newline at end of file diff --git a/tests/json/fail27.json b/tests/json/fail27.json new file mode 100644 index 00000000..6b01a2ca --- /dev/null +++ b/tests/json/fail27.json @@ -0,0 +1,2 @@ +["line +break"] \ No newline at end of file diff --git a/tests/json/fail28.json b/tests/json/fail28.json new file mode 100644 index 00000000..621a0101 --- /dev/null +++ b/tests/json/fail28.json @@ -0,0 +1,2 @@ +["line\ +break"] \ No newline at end of file diff --git a/tests/json/fail29.json b/tests/json/fail29.json new file mode 100644 index 00000000..47ec421b --- /dev/null +++ b/tests/json/fail29.json @@ -0,0 +1 @@ +[0e] \ No newline at end of file diff --git a/tests/json/fail3.json b/tests/json/fail3.json new file mode 100644 index 00000000..168c81eb --- /dev/null +++ b/tests/json/fail3.json @@ -0,0 +1 @@ +{unquoted_key: "keys must be quoted"} \ No newline at end of file diff --git a/tests/json/fail30.json b/tests/json/fail30.json new file mode 100644 index 00000000..8ab0bc4b --- /dev/null +++ b/tests/json/fail30.json @@ -0,0 +1 @@ +[0e+] \ No newline at end of file diff --git a/tests/json/fail31.json b/tests/json/fail31.json new file mode 100644 index 00000000..1cce602b --- /dev/null +++ b/tests/json/fail31.json @@ -0,0 +1 @@ +[0e+-1] \ No newline at end of file diff --git a/tests/json/fail32.json b/tests/json/fail32.json new file mode 100644 index 00000000..45cba739 --- /dev/null +++ b/tests/json/fail32.json @@ -0,0 +1 @@ +{"Comma instead if closing brace": true, \ No newline at end of file diff --git a/tests/json/fail33.json b/tests/json/fail33.json new file mode 100644 index 00000000..ca5eb19d --- /dev/null +++ b/tests/json/fail33.json @@ -0,0 +1 @@ +["mismatch"} \ No newline at end of file diff --git a/tests/json/fail4.json b/tests/json/fail4.json new file mode 100644 index 00000000..9de168bf --- /dev/null +++ b/tests/json/fail4.json @@ -0,0 +1 @@ +["extra comma",] \ No newline at end of file diff --git a/tests/json/fail5.json b/tests/json/fail5.json new file mode 100644 index 00000000..ddf3ce3d --- /dev/null +++ b/tests/json/fail5.json @@ -0,0 +1 @@ +["double extra comma",,] \ No newline at end of file diff --git a/tests/json/fail6.json b/tests/json/fail6.json new file mode 100644 index 00000000..ed91580e --- /dev/null +++ b/tests/json/fail6.json @@ -0,0 +1 @@ +[ , "<-- missing value"] \ No newline at end of file diff --git a/tests/json/fail7.json b/tests/json/fail7.json new file mode 100644 index 00000000..8a96af3e --- /dev/null +++ b/tests/json/fail7.json @@ -0,0 +1 @@ +["Comma after the close"], \ No newline at end of file diff --git a/tests/json/fail8.json b/tests/json/fail8.json new file mode 100644 index 00000000..b28479c6 --- /dev/null +++ b/tests/json/fail8.json @@ -0,0 +1 @@ +["Extra close"]] \ No newline at end of file diff --git a/tests/json/fail9.json b/tests/json/fail9.json new file mode 100644 index 00000000..5815574f --- /dev/null +++ b/tests/json/fail9.json @@ -0,0 +1 @@ +{"Extra comma": true,} \ No newline at end of file diff --git a/tests/json/pass1.json b/tests/json/pass1.json new file mode 100644 index 00000000..70e26854 --- /dev/null +++ b/tests/json/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/tests/json/pass2.json b/tests/json/pass2.json new file mode 100644 index 00000000..d3c63c7a --- /dev/null +++ b/tests/json/pass2.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/tests/json/pass3.json b/tests/json/pass3.json new file mode 100644 index 00000000..4528d51f --- /dev/null +++ b/tests/json/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/tests/test_util_json.sh b/tests/test_util_json.sh new file mode 100755 index 00000000..bbbd132b --- /dev/null +++ b/tests/test_util_json.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +export LUA_PATH="../?.lua;;" +export LUA_CPATH="../?.so;;" + +#set -x + +if ! which "$RUNWITH"; then + echo "Unable to find interpreter $RUNWITH"; + exit 1; +fi + +if ! $RUNWITH -e 'assert(require"util.json")' 2>/dev/null; then + echo "Unable to find util.json"; + exit 1; +fi + +FAIL=0 + +for f in json/pass*.json; do + if ! $RUNWITH -e 'local j=require"util.json" assert(j.decode(io.read("*a"))~=nil)' <"$f" 2>/dev/null; then + echo "Failed to decode valid JSON: $f"; + FAIL=1 + fi +done + +for f in json/fail*.json; do + if ! $RUNWITH -e 'local j=require"util.json" assert(j.decode(io.read("*a"))==nil)' <"$f" 2>/dev/null; then + echo "Invalid JSON decoded without error: $f"; + FAIL=1 + fi +done + +if [ "$FAIL" == "1" ]; then + echo "JSON tests failed" + exit 1; +fi + +exit 0; -- 2.30.2