michael@0: // Ported from dom/src/json/test/unit/test_decode.js michael@0: michael@0: var str = michael@0: '[\n' + michael@0: ' "JSON Test Pattern pass1",\n' + michael@0: ' {"object with 1 member":["array with 1 element"]},\n' + michael@0: ' {},\n' + michael@0: ' [],\n' + michael@0: ' -42,\n' + michael@0: ' true,\n' + michael@0: ' false,\n' + michael@0: ' null,\n' + michael@0: ' {\n' + michael@0: ' "integer": 1234567890,\n' + michael@0: ' "real": -9876.543210,\n' + michael@0: ' "e": 0.123456789e-12,\n' + michael@0: ' "E": 1.234567890E+34,\n' + michael@0: ' "": 23456789012E66,\n' + michael@0: ' "zero": 0,\n' + michael@0: ' "one": 1,\n' + michael@0: ' "space": " ",\n' + michael@0: ' "quote": "\\"",\n' + michael@0: ' "backslash": "\\\\",\n' + michael@0: ' "controls": "\\b\\f\\n\\r\\t",\n' + michael@0: ' "slash": "/ & \\/",\n' + michael@0: ' "alpha": "abcdefghijklmnopqrstuvwyz",\n' + michael@0: ' "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ",\n' + michael@0: ' "digit": "0123456789",\n' + michael@0: ' "0123456789": "digit",\n' + michael@0: ' "special": "`1~!@#$%^&*()_+-={\':[,]}|;.?",\n' + michael@0: ' "hex": "\\u0123\\u4567\\u89AB\\uCDEF\\uabcd\\uef4A",\n' + michael@0: ' "true": true,\n' + michael@0: ' "false": false,\n' + michael@0: ' "null": null,\n' + michael@0: ' "array":[ ],\n' + michael@0: ' "object":{ },\n' + michael@0: ' "address": "50 St. James Street",\n' + michael@0: ' "url": "http://www.JSON.org/",\n' + michael@0: ' "comment": "// /* */": " ",\n' + michael@0: ' " s p a c e d " :[1,2 , 3\n' + michael@0: '\n' + michael@0: ',\n' + michael@0: '\n' + michael@0: '4 , 5 , 6 ,7 ],"compact":[1,2,3,4,5,6,7],\n' + michael@0: ' "jsontext": "{\\"object with 1 member\\":[\\"array with 1 element\\"]}",\n' + michael@0: ' "quotes": "" \\u0022 %22 0x22 034 "",\n' + michael@0: ' "\\/\\\\\\"\\uCAFE\\uBABE\\uAB98\\uFCDE\\ubcda\\uef4A\\b\\f\\n\\r\\t`1~!@#$%^&*()_+-=[]{}|;:\',./<>?"\n' + michael@0: ': "A key can be any string"\n' + michael@0: ' },\n' + michael@0: ' 0.5 ,98.6\n' + michael@0: ',\n' + michael@0: '99.44\n' + michael@0: ',\n' + michael@0: '\n' + michael@0: '1066,\n' + michael@0: '1e1,\n' + michael@0: '0.1e1,\n' + michael@0: '1e-1,\n' + michael@0: '1e00,2e+00,2e-00\n' + michael@0: ',"rosebud"]\n'; michael@0: michael@0: var x = JSON.parse(str); michael@0: michael@0: assertEq(x[0], "JSON Test Pattern pass1"); michael@0: assertEq(x[1]["object with 1 member"][0], "array with 1 element"); michael@0: assertEq(x[2].constructor, Object); michael@0: assertEq(x[3].constructor, Array); michael@0: assertEq(x[4], -42); michael@0: assertEq(x[5], true); michael@0: assertEq(x[6], false); michael@0: assertEq(x[7], null); michael@0: assertEq(x[8].constructor, Object); michael@0: assertEq(x[8]["integer"], 1234567890); michael@0: assertEq(x[8]["real"], -9876.543210); michael@0: assertEq(x[8]["e"], 0.123456789e-12); michael@0: assertEq(x[8]["E"], 1.234567890E+34); michael@0: assertEq(x[8][""], 23456789012E66); michael@0: assertEq(x[8]["zero"], 0); michael@0: assertEq(x[8]["one"], 1); michael@0: assertEq(x[8]["space"], " "); michael@0: assertEq(x[8]["quote"], "\""); michael@0: assertEq(x[8]["backslash"], "\\"); michael@0: assertEq(x[8]["controls"], "\b\f\n\r\t"); michael@0: assertEq(x[8]["slash"], "/ & /"); michael@0: assertEq(x[8]["alpha"], "abcdefghijklmnopqrstuvwyz"); michael@0: assertEq(x[8]["ALPHA"], "ABCDEFGHIJKLMNOPQRSTUVWYZ"); michael@0: assertEq(x[8]["digit"], "0123456789"); michael@0: assertEq(x[8]["0123456789"], "digit"); michael@0: assertEq(x[8]["special"], "`1~!@#$%^&*()_+-={':[,]}|;.?"); michael@0: assertEq(x[8]["hex"], "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A"); michael@0: assertEq(x[8]["true"], true); michael@0: assertEq(x[8]["false"], false); michael@0: assertEq(x[8]["null"], null); michael@0: assertEq(x[8]["array"].length, 0); michael@0: assertEq(x[8]["object"].constructor, Object); michael@0: assertEq(x[8]["address"], "50 St. James Street"); michael@0: assertEq(x[8]["url"], "http://www.JSON.org/"); michael@0: assertEq(x[8]["comment"], "// /* */"], " "); michael@0: assertEq(x[8][" s p a c e d "].length, 7); michael@0: assertEq(x[8]["compact"].length, 7); michael@0: assertEq(x[8]["jsontext"], "{\"object with 1 member\":[\"array with 1 element\"]}"); michael@0: assertEq(x[8]["quotes"], "" \u0022 %22 0x22 034 ""); michael@0: assertEq(x[8]["\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"], "A key can be any string"); michael@0: assertEq(x[9], 0.5); michael@0: assertEq(x[10], 98.6); michael@0: assertEq(x[11], 99.44); michael@0: assertEq(x[12], 1066); michael@0: assertEq(x[13], 1e1); michael@0: assertEq(x[14], 0.1e1); michael@0: assertEq(x[15], 1e-1); michael@0: assertEq(x[16], 1e00); michael@0: assertEq(x[17], 2e+00); michael@0: assertEq(x[18], 2e-00); michael@0: assertEq(x[19], "rosebud"); michael@0: michael@0: /******************************************************************************/ michael@0: michael@0: if (typeof reportCompare === "function") michael@0: reportCompare(true, true); michael@0: michael@0: print("Tests complete");