function (jsonObject){
        return jsonObject.parse();
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected identifier "undefined".
function (jsonObject){
        return jsonObject.parse('');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected EOF.
function (jsonObject){
        return jsonObject.parse('1');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('-1');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('Infinity');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected identifier "Infinity".
function (jsonObject){
        return jsonObject.parse('NaN');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected identifier "NaN".
function (jsonObject){
        return jsonObject.parse('null');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('undefined');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected identifier "undefined".
function (jsonObject){
        return jsonObject.parse('{}');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('({})');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected token '('.
function (jsonObject){
        return jsonObject.parse('{a}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Expected '}'.
function (jsonObject){
        return jsonObject.parse('{a:}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Expected '}'.
function (jsonObject){
        return jsonObject.parse('{a:5}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Expected '}'.
function (jsonObject){
        return jsonObject.parse('{a:5,}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Expected '}'.
function (jsonObject){
        return jsonObject.parse('{"a"}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Expected ':' before value in object property definition.
function (jsonObject){
        return jsonObject.parse('{"a":}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected token '}'.
function (jsonObject){
        return jsonObject.parse('{"a":5}');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('{"__proto__":5}');
    }
json2.js uses eval and will differ when parsing JSON with __proto__.
PASS JSON.stringify(tests[i](nativeJSON)) is not JSON.stringify(tests[i](JSON))
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].jsonParseExpected
PASS JSON.stringify(tests[i](JSON)) is tests[i].evalExpected
function (jsonObject){
        return jsonObject.parse('{"a":5,}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Property name must be a string literal.
json2.js did not throw for a test we expect to throw.
function (jsonObject){
        return jsonObject.parse('{"a":5,,}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Property name must be a string literal.
function (jsonObject){
        return jsonObject.parse('{"a":5,"a",}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Expected ':' before value in object property definition.
function (jsonObject){
        return jsonObject.parse('{"a":(5,"a"),}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected token '('.
function (jsonObject){
        return jsonObject.parse('[]');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('[1]');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('[1,]');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected comma at the end of array expression.
json2.js did not throw for a test we expect to throw.
function (jsonObject){
        return jsonObject.parse('[1,2]');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('[1,2,,]');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected token ','.
json2.js did not throw for a test we expect to throw.
function (jsonObject){
        return jsonObject.parse('[1,2,,4]');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unexpected token ','.
json2.js did not throw for a test we expect to throw.
function (jsonObject){
        return jsonObject.parse('""');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"\'"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\\"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unterminated string.
function (jsonObject){
        return jsonObject.parse('"a\\z"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Invalid escape character z.
function (jsonObject){
        return jsonObject.parse('"a\\\z"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Invalid escape character z.
function (jsonObject){
        return jsonObject.parse('"a\\\\z"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\tz"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unterminated string.
json2.js did not throw for a test we expect to throw.
function (jsonObject){
        return jsonObject.parse('"a\\tz"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\nz"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unterminated string.
function (jsonObject){
        return jsonObject.parse('"a\\nz"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\rz"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unterminated string.
function (jsonObject){
        return jsonObject.parse('"a\\rz"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\/z"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\\/z"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\bz"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unterminated string.
json2.js did not throw for a test we expect to throw.
function (jsonObject){
        return jsonObject.parse('"a\\bz"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\rz"');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unterminated string.
function (jsonObject){
        return jsonObject.parse('"a\\rz"');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\\uz"     ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\uz"  " is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u0z"    ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u0z" " is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u00z"   ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u00z"" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u000z"  ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u000z" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u0000z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\\u000Az" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\\u000az" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\\u000Gz" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u000G" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u000gz" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u000g" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u00A0z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\\u00a0z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\\u00G0z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u00G0" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u00g0z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u00g0" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u0A00z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\\u0a00z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\\u0G00z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u0G00" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\u0g00z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\u0g00" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\uA000z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\\ua000z" ');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a\\uG000z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\uG000" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('"a\\ug000z" ');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: "\ug000" is not a valid unicode escape.
function (jsonObject){
        return jsonObject.parse('00');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unable to parse JSON string.
json2.js did not throw for a test we expect to throw.
function (jsonObject){
        return jsonObject.parse('01');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unable to parse JSON string.
json2.js did not throw for a test we expect to throw.
function (jsonObject){
        return jsonObject.parse('0.a');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Invalid digits after decimal point.
function (jsonObject){
        return jsonObject.parse('0x0');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unable to parse JSON string.
function (jsonObject){
        return jsonObject.parse('2e1.3');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unable to parse JSON string.
function (jsonObject){
        return jsonObject.parse('2e-+10');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Exponent symbols should be followed by an optional '+' or '-' and then by at least one number.
function (jsonObject){
        return jsonObject.parse('2e+-10');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Exponent symbols should be followed by an optional '+' or '-' and then by at least one number.
function (jsonObject){
        return jsonObject.parse('2e3e4');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unable to parse JSON string.
function (jsonObject){
        return jsonObject.parse('-01.0');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unable to parse JSON string.
function (jsonObject){
        return jsonObject.parse('-01');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unable to parse JSON string.
json2.js did not throw for a test we expect to throw.
function (jsonObject){
        return jsonObject.parse('-01.a');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Invalid digits after decimal point.
function (jsonObject){
        return jsonObject.parse('1.e1');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Invalid digits after decimal point.
json2.js did not throw for a test we expect to throw.
function (jsonObject){
        return jsonObject.parse('{/* block comments are not allowed */}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unrecognized token '/'.
function (jsonObject){
        return jsonObject.parse('{// line comments are not allowed \n}');
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unrecognized token '/'.
function (jsonObject){
        return jsonObject.parse('true');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('false');
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('\\')
    }
PASS tests[i](nativeJSON) threw exception SyntaxError: JSON Parse error: Unrecognized token '\'.
function (jsonObject){
        return jsonObject.parse(JSON.stringify(simpleObject));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject){
        return jsonObject.parse(JSON.stringify(complexObject));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse(JSON.stringify(complexObject));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject){
        return jsonObject.parse(JSON.stringify(simpleObject,null,100));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject){
        return jsonObject.parse(JSON.stringify(complexObject,null,100));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse(JSON.stringify(complexObject,null,100));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject){
        return jsonObject.parse(JSON.stringify(simpleObject,null," "));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject){
        return jsonObject.parse(JSON.stringify(complexObject,null," "));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse(JSON.stringify(complexObject,null," "));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject){
        return jsonObject.parse(JSON.stringify(simpleObject,null,"\t"));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject){
        return jsonObject.parse(JSON.stringify(complexObject,null,"\t"));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse(JSON.stringify(complexObject,null,"\t"));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject){
        return jsonObject.parse(JSON.stringify(simpleObject,null,"\n"));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject){
        return jsonObject.parse(JSON.stringify(complexObject,null,"\n"));
    }
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].expected
function (jsonObject){
        return jsonObject.parse("true", log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse("false", log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse("null", log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse("1", log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse("1.5", log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('"a string"', log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse(JSON.stringify(simpleArray), log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse(JSON.stringify(complexArray), log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse(JSON.stringify(simpleObject), log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse(JSON.stringify(complexObject), log);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse('{"__proto__":{"a":5}}', log);
    }
json2.js uses eval and will differ when parsing JSON with __proto__.
PASS JSON.stringify(tests[i](nativeJSON)) is not JSON.stringify(tests[i](JSON))
PASS JSON.stringify(tests[i](nativeJSON)) is tests[i].jsonParseExpected
PASS JSON.stringify(tests[i](JSON)) is tests[i].evalExpected
function (jsonObject){
        logOrderString = "";
        return jsonObject.parse("true", logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        return jsonObject.parse("false", logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        return jsonObject.parse("null", logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        return jsonObject.parse("1", logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        return jsonObject.parse("1.5", logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        return jsonObject.parse('"a string"', logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(simpleArray), logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(complexArray), logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(simpleObject), logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(complexObject), logOrder);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        jsonObject.parse("true", logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        jsonObject.parse("false", logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        jsonObject.parse("null", logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        jsonObject.parse("1", logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        jsonObject.parse("1.5", logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        jsonObject.parse('"a string"', logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        jsonObject.parse(JSON.stringify(simpleArray), logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        jsonObject.parse(JSON.stringify(complexArray), logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        jsonObject.parse(JSON.stringify(simpleObject), logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        logOrderString = "";
        jsonObject.parse(JSON.stringify(complexObject), logOrder);
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        callCount = 0;
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(complexArray), throwAfterFifthCall);
    }
PASS tests[i](nativeJSON) threw exception from reviver.
function (jsonObject){
        callCount = 0;
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(simpleObject), throwAfterFifthCall);
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        callCount = 0;
        logOrderString = "";
        return jsonObject.parse(JSON.stringify(complexObject), throwAfterFifthCall);
    }
PASS tests[i](nativeJSON) threw exception from reviver.
function (jsonObject){
        callCount = 0;
        logOrderString = "";
        try { jsonObject.parse(JSON.stringify(complexArray), throwAfterFifthCall); } catch (e) {}
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        callCount = 0;
        logOrderString = "";
        try { jsonObject.parse(JSON.stringify(simpleObject), throwAfterFifthCall); } catch (e) {}
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        callCount = 0;
        logOrderString = "";
        try { jsonObject.parse(JSON.stringify(complexObject), throwAfterFifthCall); } catch (e) {}
        return logOrderString;
    }
PASS JSON.stringify(tests[i](nativeJSON)) is JSON.stringify(tests[i](JSON))
function (jsonObject){
        return jsonObject.parse(JSON.stringify(unicode));
    }
PASS tests[i](nativeJSON) is tests[i].unstringifiedExpected
PASS successfullyParsed is true

TEST COMPLETE

