You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.4 KiB
57 lines
1.4 KiB
'use strict'; |
|
|
|
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(); |
|
});
|
|
|