1'use strict'; 2 3var hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'; 4 5var coercibleObject = { valueOf: function () { return 3; }, toString: function () { return 42; } }; 6var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } }; 7var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } }; 8var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } }; 9var objects = [{}, coercibleObject, toStringOnlyObject, valueOfOnlyObject]; 10var nullPrimitives = [undefined, null]; 11var nonIntegerNumbers = [-1.3, 0.2, 1.8, 1 / 3]; 12var numbers = [0, -0, Infinity, -Infinity, 42]; 13var strings = ['', 'foo']; 14var booleans = [true, false]; 15var symbols = hasSymbols ? [Symbol.iterator, Symbol('foo')] : []; 16var nonSymbolPrimitives = [].concat(nullPrimitives, booleans, strings, numbers); 17var nonNumberPrimitives = [].concat(nullPrimitives, booleans, strings, symbols); 18var nonNullPrimitives = [].concat(booleans, strings, numbers, symbols); 19var nonUndefinedPrimitives = [].concat(null, nonNullPrimitives); 20var nonStrings = [].concat(nullPrimitives, booleans, numbers, symbols, objects); 21var primitives = [].concat(nullPrimitives, nonNullPrimitives); 22var nonPropertyKeys = [].concat(nullPrimitives, booleans, numbers, objects); 23var propertyKeys = [].concat(strings, symbols); 24var nonBooleans = [].concat(nullPrimitives, strings, symbols, numbers, objects); 25var falsies = [].concat(nullPrimitives, false, '', 0, -0, NaN); 26var truthies = [].concat(true, 'foo', 42, symbols, objects); 27 28module.exports = { 29 coercibleObject: coercibleObject, 30 valueOfOnlyObject: valueOfOnlyObject, 31 toStringOnlyObject: toStringOnlyObject, 32 uncoercibleObject: uncoercibleObject, 33 objects: objects, 34 nullPrimitives: nullPrimitives, 35 numbers: numbers, 36 strings: strings, 37 booleans: booleans, 38 symbols: symbols, 39 hasSymbols: hasSymbols, 40 nonSymbolPrimitives: nonSymbolPrimitives, 41 nonNumberPrimitives: nonNumberPrimitives, 42 nonNullPrimitives: nonNullPrimitives, 43 nonUndefinedPrimitives: nonUndefinedPrimitives, 44 nonStrings: nonStrings, 45 nonNumbers: nonNumberPrimitives.concat(objects), 46 nonIntegerNumbers: nonIntegerNumbers, 47 primitives: primitives, 48 nonPropertyKeys: nonPropertyKeys, 49 propertyKeys: propertyKeys, 50 nonBooleans: nonBooleans, 51 falsies: falsies, 52 truthies: truthies 53}; 54