summaryrefslogtreecommitdiff
path: root/src/node_modules/es-abstract/test/helpers/values.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/node_modules/es-abstract/test/helpers/values.js')
-rw-r--r--src/node_modules/es-abstract/test/helpers/values.js127
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
+};