Show More
Commit Description:
submission report
Commit Description:
submission report
References:
File last commit:
Show/Diff file:
Action:
node_modules/es-abstract/test/helpers/values.js
| 121 lines
| 4.5 KiB
| application/javascript
| JavascriptLexer
|
r789 | 'use strict'; | |||
var assign = require('../../helpers/assign'); | ||||
var hasSymbols = require('has-symbols')(); | ||||
var coercibleObject = { valueOf: function () { return 3; }, toString: function () { return 42; } }; | ||||
var coercibleFnObject = { | ||||
valueOf: function () { return function valueOfFn() {}; }, | ||||
toString: function () { return 42; } | ||||
}; | ||||
var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } }; | ||||
var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } }; | ||||
var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } }; | ||||
var uncoercibleFnObject = { | ||||
valueOf: function () { return function valueOfFn() {}; }, | ||||
toString: function () { return function toStrFn() {}; } | ||||
}; | ||||
var objects = [{}, coercibleObject, coercibleFnObject, toStringOnlyObject, valueOfOnlyObject]; | ||||
var nullPrimitives = [undefined, null]; | ||||
var nonIntegerNumbers = [-1.3, 0.2, 1.8, 1 / 3]; | ||||
var zeroes = [0, -0]; | ||||
var infinities = [Infinity, -Infinity]; | ||||
var numbers = zeroes.concat([42], infinities, nonIntegerNumbers); | ||||
var strings = ['', 'foo', 'a\uD83D\uDCA9c']; | ||||
var booleans = [true, false]; | ||||
var symbols = hasSymbols ? [Symbol.iterator, Symbol('foo')] : []; | ||||
var nonSymbolPrimitives = [].concat(nullPrimitives, booleans, strings, numbers); | ||||
var nonNumberPrimitives = [].concat(nullPrimitives, booleans, strings, symbols); | ||||
var nonNullPrimitives = [].concat(booleans, strings, numbers, symbols); | ||||
var nonUndefinedPrimitives = [].concat(null, nonNullPrimitives); | ||||
var nonStrings = [].concat(nullPrimitives, booleans, numbers, symbols, objects); | ||||
var primitives = [].concat(nullPrimitives, nonNullPrimitives); | ||||
var nonPropertyKeys = [].concat(nullPrimitives, booleans, numbers, objects); | ||||
var propertyKeys = [].concat(strings, symbols); | ||||
var nonBooleans = [].concat(nullPrimitives, strings, symbols, numbers, objects); | ||||
var falsies = [].concat(nullPrimitives, false, '', 0, -0, NaN); | ||||
var truthies = [].concat(true, 'foo', 42, symbols, objects); | ||||
var timestamps = [].concat(0, 946713600000, 1546329600000); | ||||
var nonFunctions = [].concat(primitives, objects, [42]); | ||||
var nonArrays = [].concat(nonFunctions); | ||||
var descriptors = { | ||||
configurable: function (descriptor) { | ||||
return assign(assign({}, descriptor), { '[[Configurable]]': true }); | ||||
}, | ||||
nonConfigurable: function (descriptor) { | ||||
return assign(assign({}, descriptor), { '[[Configurable]]': false }); | ||||
}, | ||||
enumerable: function (descriptor) { | ||||
return assign(assign({}, descriptor), { '[[Enumerable]]': true }); | ||||
}, | ||||
nonEnumerable: function (descriptor) { | ||||
return assign(assign({}, descriptor), { '[[Enumerable]]': false }); | ||||
}, | ||||
writable: function (descriptor) { | ||||
return assign(assign({}, descriptor), { '[[Writable]]': true }); | ||||
}, | ||||
nonWritable: function (descriptor) { | ||||
return assign(assign({}, descriptor), { '[[Writable]]': false }); | ||||
} | ||||
}; | ||||
module.exports = { | ||||
coercibleObject: coercibleObject, | ||||
coercibleFnObject: coercibleFnObject, | ||||
valueOfOnlyObject: valueOfOnlyObject, | ||||
toStringOnlyObject: toStringOnlyObject, | ||||
uncoercibleObject: uncoercibleObject, | ||||
uncoercibleFnObject: uncoercibleFnObject, | ||||
objects: objects, | ||||
nonFunctions: nonFunctions, | ||||
nonArrays: nonArrays, | ||||
nullPrimitives: nullPrimitives, | ||||
numbers: numbers, | ||||
zeroes: zeroes, | ||||
infinities: infinities, | ||||
strings: strings, | ||||
booleans: booleans, | ||||
symbols: symbols, | ||||
hasSymbols: hasSymbols, | ||||
nonSymbolPrimitives: nonSymbolPrimitives, | ||||
nonNumberPrimitives: nonNumberPrimitives, | ||||
nonNullPrimitives: nonNullPrimitives, | ||||
nonUndefinedPrimitives: nonUndefinedPrimitives, | ||||
nonStrings: nonStrings, | ||||
nonNumbers: nonNumberPrimitives.concat(objects), | ||||
nonIntegerNumbers: nonIntegerNumbers, | ||||
primitives: primitives, | ||||
nonPropertyKeys: nonPropertyKeys, | ||||
propertyKeys: propertyKeys, | ||||
nonBooleans: nonBooleans, | ||||
falsies: falsies, | ||||
truthies: truthies, | ||||
timestamps: timestamps, | ||||
bothDescriptor: function () { | ||||
return { '[[Get]]': function () {}, '[[Value]]': true }; | ||||
}, | ||||
bothDescriptorWritable: function () { | ||||
return descriptors.writable({ '[[Get]]': function () {} }); | ||||
}, | ||||
accessorDescriptor: function (value) { | ||||
return descriptors.enumerable(descriptors.configurable({ | ||||
'[[Get]]': function get() { return value; } | ||||
})); | ||||
}, | ||||
mutatorDescriptor: function () { | ||||
return descriptors.enumerable(descriptors.configurable({ | ||||
'[[Set]]': function () {} | ||||
})); | ||||
}, | ||||
dataDescriptor: function (value) { | ||||
return descriptors.nonWritable({ | ||||
'[[Value]]': arguments.length > 0 ? value : 42 | ||||
}); | ||||
}, | ||||
genericDescriptor: function () { | ||||
return descriptors.configurable(descriptors.nonEnumerable()); | ||||
}, | ||||
descriptors: descriptors | ||||
}; | ||||