diff options
Diffstat (limited to 'src/node_modules/es-abstract/test/helpers/values.js')
-rw-r--r-- | src/node_modules/es-abstract/test/helpers/values.js | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/src/node_modules/es-abstract/test/helpers/values.js b/src/node_modules/es-abstract/test/helpers/values.js new file mode 100644 index 0000000..f955873 --- /dev/null +++ b/src/node_modules/es-abstract/test/helpers/values.js @@ -0,0 +1,127 @@ +'use strict'; + +var assign = require('../../helpers/assign'); + +var hasSymbols = require('has-symbols')(); +var hasBigInts = require('has-bigints')(); + +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 integerNumbers = [1, 7, 42, 1e17]; +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 bigints = hasBigInts ? [BigInt(42), BigInt(0)] : []; +var nonSymbolPrimitives = [].concat(nullPrimitives, booleans, strings, numbers, bigints); +var nonNumberPrimitives = [].concat(nullPrimitives, booleans, strings, symbols); +var nonNullPrimitives = [].concat(booleans, strings, numbers, symbols, bigints); +var nonUndefinedPrimitives = [].concat(null, nonNullPrimitives); +var nonStrings = [].concat(nullPrimitives, booleans, numbers, symbols, objects, bigints); +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 nonBigInts = [].concat(nonNumberPrimitives, numbers); + +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 = { + booleans: booleans, + coercibleFnObject: coercibleFnObject, + coercibleObject: coercibleObject, + falsies: falsies, + hasSymbols: hasSymbols, + infinities: infinities, + integerNumbers: integerNumbers, + nonArrays: nonArrays, + nonBigInts: nonBigInts, + nonBooleans: nonBooleans, + nonFunctions: nonFunctions, + nonIntegerNumbers: nonIntegerNumbers, + nonNullPrimitives: nonNullPrimitives, + nonNumberPrimitives: nonNumberPrimitives, + nonNumbers: nonNumberPrimitives.concat(objects), + nonPropertyKeys: nonPropertyKeys, + nonStrings: nonStrings, + nonSymbolPrimitives: nonSymbolPrimitives, + nonUndefinedPrimitives: nonUndefinedPrimitives, + nullPrimitives: nullPrimitives, + numbers: numbers, + objects: objects, + primitives: primitives, + propertyKeys: propertyKeys, + strings: strings, + symbols: symbols, + timestamps: timestamps, + toStringOnlyObject: toStringOnlyObject, + truthies: truthies, + uncoercibleFnObject: uncoercibleFnObject, + uncoercibleObject: uncoercibleObject, + valueOfOnlyObject: valueOfOnlyObject, + zeroes: zeroes, + 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 +}; |