Posted to tcl by mr_calvin at Fri Jul 14 10:55:54 GMT 2017view pretty

ÿÿÿADDED    tests/data/jsonchecker/fail1.json
Index: tests/data/jsonchecker/fail1.json
==================================================================
--- tests/data/jsonchecker/fail1.json
+++ tests/data/jsonchecker/fail1.json
@@ -0,0 +1,1 @@
+"A JSON payload should be an object or array, not a string."

ADDED    tests/data/jsonchecker/fail10.json
Index: tests/data/jsonchecker/fail10.json
==================================================================
--- tests/data/jsonchecker/fail10.json
+++ tests/data/jsonchecker/fail10.json
@@ -0,0 +1,1 @@
+{"Extra value after close": true} "misplaced quoted value"

ADDED    tests/data/jsonchecker/fail11.json
Index: tests/data/jsonchecker/fail11.json
==================================================================
--- tests/data/jsonchecker/fail11.json
+++ tests/data/jsonchecker/fail11.json
@@ -0,0 +1,1 @@
+{"Illegal expression": 1 + 2}

ADDED    tests/data/jsonchecker/fail12.json
Index: tests/data/jsonchecker/fail12.json
==================================================================
--- tests/data/jsonchecker/fail12.json
+++ tests/data/jsonchecker/fail12.json
@@ -0,0 +1,1 @@
+{"Illegal invocation": alert()}

ADDED    tests/data/jsonchecker/fail13.json
Index: tests/data/jsonchecker/fail13.json
==================================================================
--- tests/data/jsonchecker/fail13.json
+++ tests/data/jsonchecker/fail13.json
@@ -0,0 +1,1 @@
+{"Numbers cannot have leading zeroes": 013}

ADDED    tests/data/jsonchecker/fail14.json
Index: tests/data/jsonchecker/fail14.json
==================================================================
--- tests/data/jsonchecker/fail14.json
+++ tests/data/jsonchecker/fail14.json
@@ -0,0 +1,1 @@
+{"Numbers cannot be hex": 0x14}

ADDED    tests/data/jsonchecker/fail15.json
Index: tests/data/jsonchecker/fail15.json
==================================================================
--- tests/data/jsonchecker/fail15.json
+++ tests/data/jsonchecker/fail15.json
@@ -0,0 +1,1 @@
+["Illegal backslash escape: \x15"]

ADDED    tests/data/jsonchecker/fail16.json
Index: tests/data/jsonchecker/fail16.json
==================================================================
--- tests/data/jsonchecker/fail16.json
+++ tests/data/jsonchecker/fail16.json
@@ -0,0 +1,1 @@
+[\naked]

ADDED    tests/data/jsonchecker/fail17.json
Index: tests/data/jsonchecker/fail17.json
==================================================================
--- tests/data/jsonchecker/fail17.json
+++ tests/data/jsonchecker/fail17.json
@@ -0,0 +1,1 @@
+["Illegal backslash escape: \017"]

ADDED    tests/data/jsonchecker/fail18.json
Index: tests/data/jsonchecker/fail18.json
==================================================================
--- tests/data/jsonchecker/fail18.json
+++ tests/data/jsonchecker/fail18.json
@@ -0,0 +1,1 @@
+[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]

ADDED    tests/data/jsonchecker/fail19.json
Index: tests/data/jsonchecker/fail19.json
==================================================================
--- tests/data/jsonchecker/fail19.json
+++ tests/data/jsonchecker/fail19.json
@@ -0,0 +1,1 @@
+{"Missing colon" null}

ADDED    tests/data/jsonchecker/fail2.json
Index: tests/data/jsonchecker/fail2.json
==================================================================
--- tests/data/jsonchecker/fail2.json
+++ tests/data/jsonchecker/fail2.json
@@ -0,0 +1,1 @@
+["Unclosed array"

ADDED    tests/data/jsonchecker/fail20.json
Index: tests/data/jsonchecker/fail20.json
==================================================================
--- tests/data/jsonchecker/fail20.json
+++ tests/data/jsonchecker/fail20.json
@@ -0,0 +1,1 @@
+{"Double colon":: null}

ADDED    tests/data/jsonchecker/fail21.json
Index: tests/data/jsonchecker/fail21.json
==================================================================
--- tests/data/jsonchecker/fail21.json
+++ tests/data/jsonchecker/fail21.json
@@ -0,0 +1,1 @@
+{"Comma instead of colon", null}

ADDED    tests/data/jsonchecker/fail22.json
Index: tests/data/jsonchecker/fail22.json
==================================================================
--- tests/data/jsonchecker/fail22.json
+++ tests/data/jsonchecker/fail22.json
@@ -0,0 +1,1 @@
+["Colon instead of comma": false]

ADDED    tests/data/jsonchecker/fail23.json
Index: tests/data/jsonchecker/fail23.json
==================================================================
--- tests/data/jsonchecker/fail23.json
+++ tests/data/jsonchecker/fail23.json
@@ -0,0 +1,1 @@
+["Bad value", truth]

ADDED    tests/data/jsonchecker/fail24.json
Index: tests/data/jsonchecker/fail24.json
==================================================================
--- tests/data/jsonchecker/fail24.json
+++ tests/data/jsonchecker/fail24.json
@@ -0,0 +1,1 @@
+['single quote']

ADDED    tests/data/jsonchecker/fail25.json
Index: tests/data/jsonchecker/fail25.json
==================================================================
--- tests/data/jsonchecker/fail25.json
+++ tests/data/jsonchecker/fail25.json
@@ -0,0 +1,1 @@
+["	tab	character	in	string	"]

ADDED    tests/data/jsonchecker/fail26.json
Index: tests/data/jsonchecker/fail26.json
==================================================================
--- tests/data/jsonchecker/fail26.json
+++ tests/data/jsonchecker/fail26.json
@@ -0,0 +1,1 @@
+["tab\   character\   in\  string\  "]

ADDED    tests/data/jsonchecker/fail27.json
Index: tests/data/jsonchecker/fail27.json
==================================================================
--- tests/data/jsonchecker/fail27.json
+++ tests/data/jsonchecker/fail27.json
@@ -0,0 +1,2 @@
+["line
+break"]

ADDED    tests/data/jsonchecker/fail28.json
Index: tests/data/jsonchecker/fail28.json
==================================================================
--- tests/data/jsonchecker/fail28.json
+++ tests/data/jsonchecker/fail28.json
@@ -0,0 +1,2 @@
+["line\
+break"]

ADDED    tests/data/jsonchecker/fail29.json
Index: tests/data/jsonchecker/fail29.json
==================================================================
--- tests/data/jsonchecker/fail29.json
+++ tests/data/jsonchecker/fail29.json
@@ -0,0 +1,1 @@
+[0e]

ADDED    tests/data/jsonchecker/fail3.json
Index: tests/data/jsonchecker/fail3.json
==================================================================
--- tests/data/jsonchecker/fail3.json
+++ tests/data/jsonchecker/fail3.json
@@ -0,0 +1,1 @@
+{unquoted_key: "keys must be quoted"}

ADDED    tests/data/jsonchecker/fail30.json
Index: tests/data/jsonchecker/fail30.json
==================================================================
--- tests/data/jsonchecker/fail30.json
+++ tests/data/jsonchecker/fail30.json
@@ -0,0 +1,1 @@
+[0e+]

ADDED    tests/data/jsonchecker/fail31.json
Index: tests/data/jsonchecker/fail31.json
==================================================================
--- tests/data/jsonchecker/fail31.json
+++ tests/data/jsonchecker/fail31.json
@@ -0,0 +1,1 @@
+[0e+-1]

ADDED    tests/data/jsonchecker/fail32.json
Index: tests/data/jsonchecker/fail32.json
==================================================================
--- tests/data/jsonchecker/fail32.json
+++ tests/data/jsonchecker/fail32.json
@@ -0,0 +1,1 @@
+{"Comma instead if closing brace": true,

ADDED    tests/data/jsonchecker/fail33.json
Index: tests/data/jsonchecker/fail33.json
==================================================================
--- tests/data/jsonchecker/fail33.json
+++ tests/data/jsonchecker/fail33.json
@@ -0,0 +1,1 @@
+["mismatch"}

ADDED    tests/data/jsonchecker/fail4.json
Index: tests/data/jsonchecker/fail4.json
==================================================================
--- tests/data/jsonchecker/fail4.json
+++ tests/data/jsonchecker/fail4.json
@@ -0,0 +1,1 @@
+["extra comma",]

ADDED    tests/data/jsonchecker/fail5.json
Index: tests/data/jsonchecker/fail5.json
==================================================================
--- tests/data/jsonchecker/fail5.json
+++ tests/data/jsonchecker/fail5.json
@@ -0,0 +1,1 @@
+["double extra comma",,]

ADDED    tests/data/jsonchecker/fail6.json
Index: tests/data/jsonchecker/fail6.json
==================================================================
--- tests/data/jsonchecker/fail6.json
+++ tests/data/jsonchecker/fail6.json
@@ -0,0 +1,1 @@
+[   , "<-- missing value"]

ADDED    tests/data/jsonchecker/fail7.json
Index: tests/data/jsonchecker/fail7.json
==================================================================
--- tests/data/jsonchecker/fail7.json
+++ tests/data/jsonchecker/fail7.json
@@ -0,0 +1,1 @@
+["Comma after the close"],

ADDED    tests/data/jsonchecker/fail8.json
Index: tests/data/jsonchecker/fail8.json
==================================================================
--- tests/data/jsonchecker/fail8.json
+++ tests/data/jsonchecker/fail8.json
@@ -0,0 +1,1 @@
+["Extra close"]]

ADDED    tests/data/jsonchecker/fail9.json
Index: tests/data/jsonchecker/fail9.json
==================================================================
--- tests/data/jsonchecker/fail9.json
+++ tests/data/jsonchecker/fail9.json
@@ -0,0 +1,1 @@
+{"Extra comma": true,}

ADDED    tests/data/jsonchecker/pass1.json
Index: tests/data/jsonchecker/pass1.json
==================================================================
--- tests/data/jsonchecker/pass1.json
+++ tests/data/jsonchecker/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": "&#34; \u0022 %22 0x22 034 &#x22;",
+        "\/\\\"\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"]

ADDED    tests/data/jsonchecker/pass2.json
Index: tests/data/jsonchecker/pass2.json
==================================================================
--- tests/data/jsonchecker/pass2.json
+++ tests/data/jsonchecker/pass2.json
@@ -0,0 +1,1 @@
+[[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]]

ADDED    tests/data/jsonchecker/pass3.json
Index: tests/data/jsonchecker/pass3.json
==================================================================
--- tests/data/jsonchecker/pass3.json
+++ tests/data/jsonchecker/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."
+    }
+}

ADDED    tests/jsonchecker.test
Index: tests/jsonchecker.test
==================================================================
--- tests/jsonchecker.test
+++ tests/jsonchecker.test
@@ -0,0 +1,45 @@
+#
+# http://www.json.org/JSON_checker/
+# http://www.json.org/JSON_checker/test.zip
+#
+
+source [file join [file dir [info script]] loadtdom.tcl]
+
+set datadir [file join tests data [lindex [split [file tail [info script]] "."] 0]]
+
+set counter 1
+
+foreach pass [lsort [glob -dir $datadir pass*]] {
+    set fh [open $pass r]
+    set json [read $fh]
+    test jsonchecker-$counter "Rountrip: $pass" -body {
+	set doc [dom parse -json $json]
+	set out [$doc asJSON]
+	$doc delete
+	set out
+    } -result $json -cleanup {
+	catch {close $fh}
+	unset -nocomplain fh
+	unset -nocomplain json
+	incr counter
+    }
+}
+
+foreach fail [lsort [glob -dir $datadir fail*]] {
+    test jsonchecker-$counter "Syntax fail: $fail" -setup {
+	set fh [open $fail r]
+	set json [read $fh]
+    } -body {
+	dom parse -json $json
+    } -result {error "JSON syntax error" at position*} -match glob -returnCodes 1 -cleanup {
+	catch {close $fh}
+	unset -nocomplain fh
+	unset -nocomplain  json
+	incr counter
+    }
+}
+
+
+
+
+