1
0
mirror of synced 2025-12-24 08:36:39 +08:00

Merge pull request #2 from umbrae/master

Added Tests from JSON_Checker
This commit is contained in:
Zach Carter
2011-05-16 17:13:07 -07:00
37 changed files with 280 additions and 0 deletions

View File

@@ -17,5 +17,185 @@ exports["test string with line break"] = function () {
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test a json payload should be an object or array not a string"] = function () {
var json = fs.readFileSync(__dirname + "/fails/1.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test unclosed array"] = function () {
var json = fs.readFileSync(__dirname + "/fails/2.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test unquotedkey keys must be quoted"] = function () {
var json = fs.readFileSync(__dirname + "/fails/3.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test extra comma"] = function () {
var json = fs.readFileSync(__dirname + "/fails/4.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test double extra comma"] = function () {
var json = fs.readFileSync(__dirname + "/fails/5.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test missing value"] = function () {
var json = fs.readFileSync(__dirname + "/fails/6.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test comma after the close"] = function () {
var json = fs.readFileSync(__dirname + "/fails/7.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test extra close"] = function () {
var json = fs.readFileSync(__dirname + "/fails/8.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test extra comma after value"] = function () {
var json = fs.readFileSync(__dirname + "/fails/9.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test extra value after close with misplaced quotes"] = function () {
var json = fs.readFileSync(__dirname + "/fails/10.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test illegal expression addition"] = function () {
var json = fs.readFileSync(__dirname + "/fails/11.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test illegal invocation of alert"] = function () {
var json = fs.readFileSync(__dirname + "/fails/12.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test numbers cannot have leading zeroes"] = function () {
var json = fs.readFileSync(__dirname + "/fails/13.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test numbers cannot be hex"] = function () {
var json = fs.readFileSync(__dirname + "/fails/14.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test illegal backslash escape \\0"] = function () {
var json = fs.readFileSync(__dirname + "/fails/15.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test unquoted text"] = function () {
var json = fs.readFileSync(__dirname + "/fails/16.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test illegal backslash escape \\x"] = function () {
var json = fs.readFileSync(__dirname + "/fails/17.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test too deep"] = function () {
var json = fs.readFileSync(__dirname + "/fails/18.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test missing colon"] = function () {
var json = fs.readFileSync(__dirname + "/fails/19.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test double colon"] = function () {
var json = fs.readFileSync(__dirname + "/fails/20.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test comma instead of colon"] = function () {
var json = fs.readFileSync(__dirname + "/fails/21.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test colon instead of comma"] = function () {
var json = fs.readFileSync(__dirname + "/fails/22.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test bad raw value"] = function () {
var json = fs.readFileSync(__dirname + "/fails/23.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test single quotes"] = function () {
var json = fs.readFileSync(__dirname + "/fails/24.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test tab character in string"] = function () {
var json = fs.readFileSync(__dirname + "/fails/25.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test tab character in string 2"] = function () {
var json = fs.readFileSync(__dirname + "/fails/26.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test line break in string"] = function () {
var json = fs.readFileSync(__dirname + "/fails/27.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test line break in string in array"] = function () {
var json = fs.readFileSync(__dirname + "/fails/28.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test 0e"] = function () {
var json = fs.readFileSync(__dirname + "/fails/29.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test 0e+"] = function () {
var json = fs.readFileSync(__dirname + "/fails/30.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test 0e+ 1"] = function () {
var json = fs.readFileSync(__dirname + "/fails/31.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test comma instead of closing brace"] = function () {
var json = fs.readFileSync(__dirname + "/fails/32.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test bracket mismatch"] = function () {
var json = fs.readFileSync(__dirname + "/fails/33.json");
assert["throws"](function () {parser.parse(json)}, "should throw error");
};
exports["test pass-1"] = function () {
var json = fs.readFileSync(__dirname + "/passes/1.json").toString();
assert.doesNotThrow(function () {parser.parse(json)}, "should pass");
}
exports["test pass-2"] = function () {
var json = fs.readFileSync(__dirname + "/passes/2.json").toString();
assert.doesNotThrow(function () {parser.parse(json)}, "should pass");
}
exports["test pass-3"] = function () {
var json = fs.readFileSync(__dirname + "/passes/3.json").toString();
assert.doesNotThrow(function () {parser.parse(json)}, "should pass");
}
if (require.main === module)
require("test").run(exports);

1
test/fails/1.json Normal file
View File

@@ -0,0 +1 @@
"A JSON payload should be an object or array, not a string."

1
test/fails/10.json Normal file
View File

@@ -0,0 +1 @@
{"Extra value after close": true} "misplaced quoted value"

1
test/fails/11.json Normal file
View File

@@ -0,0 +1 @@
{"Illegal expression": 1 + 2}

1
test/fails/12.json Normal file
View File

@@ -0,0 +1 @@
{"Illegal invocation": alert()}

1
test/fails/13.json Normal file
View File

@@ -0,0 +1 @@
{"Numbers cannot have leading zeroes": 013}

1
test/fails/14.json Normal file
View File

@@ -0,0 +1 @@
{"Numbers cannot be hex": 0x14}

1
test/fails/15.json Normal file
View File

@@ -0,0 +1 @@
["Illegal backslash escape: \x15"]

1
test/fails/16.json Normal file
View File

@@ -0,0 +1 @@
[\naked]

1
test/fails/17.json Normal file
View File

@@ -0,0 +1 @@
["Illegal backslash escape: \017"]

1
test/fails/18.json Normal file
View File

@@ -0,0 +1 @@
[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]

1
test/fails/19.json Normal file
View File

@@ -0,0 +1 @@
{"Missing colon" null}

1
test/fails/2.json Normal file
View File

@@ -0,0 +1 @@
["Unclosed array"

1
test/fails/20.json Normal file
View File

@@ -0,0 +1 @@
{"Double colon":: null}

1
test/fails/21.json Normal file
View File

@@ -0,0 +1 @@
{"Comma instead of colon", null}

1
test/fails/22.json Normal file
View File

@@ -0,0 +1 @@
["Colon instead of comma": false]

1
test/fails/23.json Normal file
View File

@@ -0,0 +1 @@
["Bad value", truth]

1
test/fails/24.json Normal file
View File

@@ -0,0 +1 @@
['single quote']

1
test/fails/25.json Normal file
View File

@@ -0,0 +1 @@
[" tab character in string "]

1
test/fails/26.json Normal file
View File

@@ -0,0 +1 @@
["tab\ character\ in\ string\ "]

2
test/fails/27.json Normal file
View File

@@ -0,0 +1,2 @@
["line
break"]

2
test/fails/28.json Normal file
View File

@@ -0,0 +1,2 @@
["line\
break"]

1
test/fails/29.json Normal file
View File

@@ -0,0 +1 @@
[0e]

1
test/fails/3.json Normal file
View File

@@ -0,0 +1 @@
{unquoted_key: "keys must be quoted"}

1
test/fails/30.json Normal file
View File

@@ -0,0 +1 @@
[0e+]

1
test/fails/31.json Normal file
View File

@@ -0,0 +1 @@
[0e+-1]

1
test/fails/32.json Normal file
View File

@@ -0,0 +1 @@
{"Comma instead if closing brace": true,

1
test/fails/33.json Normal file
View File

@@ -0,0 +1 @@
["mismatch"}

1
test/fails/4.json Normal file
View File

@@ -0,0 +1 @@
["extra comma",]

1
test/fails/5.json Normal file
View File

@@ -0,0 +1 @@
["double extra comma",,]

1
test/fails/6.json Normal file
View File

@@ -0,0 +1 @@
[ , "<-- missing value"]

1
test/fails/7.json Normal file
View File

@@ -0,0 +1 @@
["Comma after the close"],

1
test/fails/8.json Normal file
View File

@@ -0,0 +1 @@
["Extra close"]]

1
test/fails/9.json Normal file
View File

@@ -0,0 +1 @@
{"Extra comma": true,}

58
test/passes/1.json Normal file
View File

@@ -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"]

1
test/passes/2.json Normal file
View File

@@ -0,0 +1 @@
[[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]]

6
test/passes/3.json Normal file
View File

@@ -0,0 +1,6 @@
{
"JSON Test Pattern pass3": {
"The outermost value": "must be an object or array.",
"In this test": "It is an object."
}
}