This test checks that object literals are serialized properly. It's needed in part because JavaScriptCore converts numeric property names to string and back.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS compileAndSerialize('a = { 1: null }') is 'a = { 1: null }'
PASS compileAndSerialize('a = { 0: null }') is 'a = { 0: null }'
PASS compileAndSerialize('a = { 1.0: null }') is 'a = { 1: null }'
PASS compileAndSerialize('a = { "1.0": null }') is 'a = { "1.0": null }'
PASS compileAndSerialize('a = { 1e-500: null }') is 'a = { 0: null }'
PASS compileAndSerialize('a = { 1e-300: null }') is 'a = { 1e-300: null }'
PASS compileAndSerialize('a = { 1e300: null }') is 'a = { 1e+300: null }'
PASS compileAndSerialize('a = { 1e500: null }') is 'a = { "Infinity": null }'
PASS compileAndSerialize('a = { NaN: null }') is 'a = { "NaN": null }'
PASS compileAndSerialize('a = { Infinity: null }') is 'a = { "Infinity": null }'
PASS compileAndSerialize('a = { "1": null }') is 'a = { 1: null }'
PASS compileAndSerialize('a = { "1hi": null }') is 'a = { "1hi": null }'
PASS compileAndSerialize('a = { "\'": null }') is 'a = { "\'": null }'
PASS compileAndSerialize('a = { "\\"": null }') is 'a = { "\\"": null }'
PASS compileAndSerialize('a = { get x() { } }') is 'a = { get x() { } }'
PASS compileAndSerialize('a = { set x(y) { } }') is 'a = { set x(y) { } }'
PASS compileAndSerialize('a = { --1: null }') threw exception SyntaxError: Parse error.
PASS compileAndSerialize('a = { -NaN: null }') threw exception SyntaxError: Parse error.
PASS compileAndSerialize('a = { -0: null }') threw exception SyntaxError: Parse error.
PASS compileAndSerialize('a = { -0.0: null }') threw exception SyntaxError: Parse error.
PASS compileAndSerialize('a = { -Infinity: null }') threw exception SyntaxError: Parse error.
PASS successfullyParsed is true

TEST COMPLETE

