X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/2d39b0e377c0896910ee49ae70082ba665faf986..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/tests/stress/symbol-define-property.js diff --git a/tests/stress/symbol-define-property.js b/tests/stress/symbol-define-property.js new file mode 100644 index 0000000..bac3ec0 --- /dev/null +++ b/tests/stress/symbol-define-property.js @@ -0,0 +1,33 @@ +// This tests Object.create, Object.defineProperty, Object.defineProperties work with Symbol. + +function testSymbol(object) { + if (!object.hasOwnProperty(Symbol.iterator)) + throw "Error: object doesn't have Symbol.iterator"; + if (object.propertyIsEnumerable(Symbol.iterator)) + throw "Error: Symbol.iterator is defined as enumerable"; + if (JSON.stringify(Object.getOwnPropertyDescriptor(object, Symbol.iterator)) !== '{"value":42,"writable":false,"enumerable":false,"configurable":false}') + throw "Error: bad property descriptor " + JSON.stringify(Object.getOwnPropertyDescriptor(object, Symbol.iterator)); + if (Object.getOwnPropertySymbols(object).length !== 1) + throw "Error: bad value " + Object.getOwnPropertySymbols(object).length; + if (Object.getOwnPropertySymbols(object)[0] !== Symbol.iterator) + throw "Error: bad value " + String(Object.getOwnPropertySymbols(object)[0]); +} + +var object = Object.create(Object.prototype, { + [Symbol.iterator]: { + value: 42 + } +}); +testSymbol(object); + +var object = Object.defineProperties({}, { + [Symbol.iterator]: { + value: 42 + } +}); +testSymbol(object); + +var object = Object.defineProperty({}, Symbol.iterator, { + value: 42 +}); +testSymbol(object);