Spaces:
Configuration error
Configuration error
| ; | |
| var test = require('tape'); | |
| var hasPropertyDescriptors = require('../'); | |
| var sentinel = {}; | |
| test('hasPropertyDescriptors', function (t) { | |
| t.equal(typeof hasPropertyDescriptors, 'function', 'is a function'); | |
| t.equal(typeof hasPropertyDescriptors.hasArrayLengthDefineBug, 'function', '`hasArrayLengthDefineBug` property is a function'); | |
| var yes = hasPropertyDescriptors(); | |
| t.test('property descriptors', { skip: !yes }, function (st) { | |
| var o = { a: sentinel }; | |
| st.deepEqual( | |
| Object.getOwnPropertyDescriptor(o, 'a'), | |
| { | |
| configurable: true, | |
| enumerable: true, | |
| value: sentinel, | |
| writable: true | |
| }, | |
| 'has expected property descriptor' | |
| ); | |
| Object.defineProperty(o, 'a', { enumerable: false, writable: false }); | |
| st.deepEqual( | |
| Object.getOwnPropertyDescriptor(o, 'a'), | |
| { | |
| configurable: true, | |
| enumerable: false, | |
| value: sentinel, | |
| writable: false | |
| }, | |
| 'has expected property descriptor after [[Define]]' | |
| ); | |
| st.end(); | |
| }); | |
| var arrayBug = hasPropertyDescriptors.hasArrayLengthDefineBug(); | |
| t.test('defining array lengths', { skip: !yes || arrayBug }, function (st) { | |
| var arr = [1, , 3]; // eslint-disable-line no-sparse-arrays | |
| st.equal(arr.length, 3, 'array starts with length 3'); | |
| Object.defineProperty(arr, 'length', { value: 5 }); | |
| st.equal(arr.length, 5, 'array ends with length 5'); | |
| st.end(); | |
| }); | |
| t.end(); | |
| }); | |