X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/2d39b0e377c0896910ee49ae70082ba665faf986..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/tests/stress/object-get-own-property-symbols.js diff --git a/tests/stress/object-get-own-property-symbols.js b/tests/stress/object-get-own-property-symbols.js new file mode 100644 index 0000000..40e93d8 --- /dev/null +++ b/tests/stress/object-get-own-property-symbols.js @@ -0,0 +1,35 @@ +// This tests Object.getOwnPropertySymbols. + +var global = (Function("return this")()); + +// private names for privileged code should not be exposed. +if (Object.getOwnPropertySymbols(global).length !== 0) + throw "Error: bad value " + Object.getOwnPropertySymbols(global).length; + +var object = {}; +var symbol = Symbol("Cocoa"); +object[symbol] = "Cappuccino"; +if (Object.getOwnPropertyNames(object).length !== 0) + throw "Error: bad value " + Object.getOwnPropertyNames(object).length; +if (Object.getOwnPropertySymbols(object).length !== 1) + throw "Error: bad value " + Object.getOwnPropertySymbols(object).length; +if (Object.getOwnPropertySymbols(object)[0] !== symbol) + throw "Error: bad value " + String(Object.getOwnPropertySymbols(object)[0]); + +function forIn(obj) { + var array = []; + // Symbol should not be enumerated. + for (var key in obj) array.push(key); + return array; +} + +if (forIn(object).length !== 0) + throw "Error: bad value " + forIn(object).length; +if (Object.keys(object).length !== 0) + throw "Error: bad value " + Object.keys(object).length; + +delete object[symbol]; +if (Object.getOwnPropertyNames(object).length !== 0) + throw "Error: bad value " + Object.getOwnPropertyNames(object).length; +if (Object.getOwnPropertySymbols(object).length !== 0) + throw "Error: bad value " + Object.getOwnPropertySymbols(object).length;