yeet
This commit is contained in:
42
node_modules/es-abstract/test/helpers/OwnPropertyKeys.js
generated
vendored
Normal file
42
node_modules/es-abstract/test/helpers/OwnPropertyKeys.js
generated
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
'use strict';
|
||||
|
||||
var test = require('tape');
|
||||
var hasSymbols = require('has-symbols')();
|
||||
|
||||
var OwnPropertyKeys = require('../../helpers/OwnPropertyKeys');
|
||||
var defineProperty = require('./defineProperty');
|
||||
|
||||
test('OwnPropertyKeys', function (t) {
|
||||
t.deepEqual(OwnPropertyKeys({ a: 1, b: 2 }).sort(), ['a', 'b'].sort(), 'returns own string keys');
|
||||
|
||||
t.test('Symbols', { skip: !hasSymbols }, function (st) {
|
||||
var o = { a: 1 };
|
||||
var sym = Symbol();
|
||||
o[sym] = 2;
|
||||
|
||||
st.deepEqual(OwnPropertyKeys(o), ['a', sym], 'returns own string and symbol keys');
|
||||
|
||||
st.end();
|
||||
});
|
||||
|
||||
t.test('non-enumerables', { skip: !defineProperty.oDP }, function (st) {
|
||||
var o = { a: 1, b: 42, c: NaN };
|
||||
defineProperty(o, 'b', { enumerable: false, value: 42 });
|
||||
defineProperty(o, 'c', { enumerable: false, get: function () { return NaN; } });
|
||||
|
||||
if (hasSymbols) {
|
||||
defineProperty(o, 'd', { enumerable: false, value: true });
|
||||
defineProperty(o, 'e', { enumerable: false, get: function () { return true; } });
|
||||
}
|
||||
|
||||
st.deepEqual(
|
||||
OwnPropertyKeys(o).sort(),
|
||||
(hasSymbols ? ['a', 'b', 'c', 'd', 'e'] : ['a', 'b', 'c']).sort(),
|
||||
'returns non-enumerable own keys, including accessors and symbols if available'
|
||||
);
|
||||
|
||||
st.end();
|
||||
});
|
||||
|
||||
t.end();
|
||||
});
|
60
node_modules/es-abstract/test/helpers/assertRecord.js
generated
vendored
Normal file
60
node_modules/es-abstract/test/helpers/assertRecord.js
generated
vendored
Normal file
@ -0,0 +1,60 @@
|
||||
'use strict';
|
||||
|
||||
var forEach = require('foreach');
|
||||
var debug = require('object-inspect');
|
||||
|
||||
var assertRecord = require('../../helpers/assertRecord');
|
||||
var v = require('es-value-fixtures');
|
||||
|
||||
module.exports = function assertRecordTests(ES, test) {
|
||||
test('Property Descriptor', function (t) {
|
||||
var record = 'Property Descriptor';
|
||||
|
||||
forEach(v.nonUndefinedPrimitives, function (primitive) {
|
||||
t['throws'](
|
||||
function () { assertRecord(ES.Type, record, 'arg', primitive); },
|
||||
TypeError,
|
||||
debug(primitive) + ' is not a Property Descriptor'
|
||||
);
|
||||
});
|
||||
|
||||
t['throws'](
|
||||
function () { assertRecord(ES.Type, record, 'arg', { invalid: true }); },
|
||||
TypeError,
|
||||
'invalid keys not allowed on a Property Descriptor'
|
||||
);
|
||||
|
||||
t.doesNotThrow(
|
||||
function () { assertRecord(ES.Type, record, 'arg', {}); },
|
||||
'empty object is an incomplete Property Descriptor'
|
||||
);
|
||||
|
||||
t.doesNotThrow(
|
||||
function () { assertRecord(ES.Type, record, 'arg', v.accessorDescriptor()); },
|
||||
'accessor descriptor is a Property Descriptor'
|
||||
);
|
||||
|
||||
t.doesNotThrow(
|
||||
function () { assertRecord(ES.Type, record, 'arg', v.mutatorDescriptor()); },
|
||||
'mutator descriptor is a Property Descriptor'
|
||||
);
|
||||
|
||||
t.doesNotThrow(
|
||||
function () { assertRecord(ES.Type, record, 'arg', v.dataDescriptor()); },
|
||||
'data descriptor is a Property Descriptor'
|
||||
);
|
||||
|
||||
t.doesNotThrow(
|
||||
function () { assertRecord(ES.Type, record, 'arg', v.genericDescriptor()); },
|
||||
'generic descriptor is a Property Descriptor'
|
||||
);
|
||||
|
||||
t['throws'](
|
||||
function () { assertRecord(ES.Type, record, 'arg', v.bothDescriptor()); },
|
||||
TypeError,
|
||||
'a Property Descriptor can not be both a Data and an Accessor Descriptor'
|
||||
);
|
||||
|
||||
t.end();
|
||||
});
|
||||
};
|
23
node_modules/es-abstract/test/helpers/createBoundESNamespace.js
generated
vendored
Normal file
23
node_modules/es-abstract/test/helpers/createBoundESNamespace.js
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
'use strict';
|
||||
|
||||
var bind = require('function-bind');
|
||||
|
||||
var OwnPropertyKeys = require('../../helpers/OwnPropertyKeys');
|
||||
|
||||
module.exports = function createBoundESNamespace(ES) {
|
||||
var keys = OwnPropertyKeys(ES);
|
||||
var result = {};
|
||||
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var key = keys[i];
|
||||
var prop = ES[key];
|
||||
if (typeof prop === 'function') {
|
||||
prop = bind.call(prop, undefined);
|
||||
} else if (prop && typeof prop === 'object') {
|
||||
prop = createBoundESNamespace(prop);
|
||||
}
|
||||
result[key] = prop;
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
27
node_modules/es-abstract/test/helpers/defineProperty.js
generated
vendored
Normal file
27
node_modules/es-abstract/test/helpers/defineProperty.js
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
'use strict';
|
||||
|
||||
var GetIntrinsic = require('../../GetIntrinsic');
|
||||
|
||||
var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);
|
||||
|
||||
if ($defineProperty) {
|
||||
try {
|
||||
$defineProperty({}, 'a', { value: 1 });
|
||||
} catch (e) {
|
||||
// IE 8 has a broken defineProperty
|
||||
$defineProperty = null;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = function defineProperty(O, P, Desc) {
|
||||
if ($defineProperty) {
|
||||
return $defineProperty(O, P, Desc);
|
||||
}
|
||||
if ((Desc.enumerable && Desc.configurable && Desc.writable) || !(P in O)) {
|
||||
O[P] = Desc.value; // eslint-disable-line no-param-reassign
|
||||
return O;
|
||||
}
|
||||
|
||||
throw new SyntaxError('helper does not yet support this configuration');
|
||||
};
|
||||
module.exports.oDP = $defineProperty;
|
67
node_modules/es-abstract/test/helpers/getSymbolDescription.js
generated
vendored
Normal file
67
node_modules/es-abstract/test/helpers/getSymbolDescription.js
generated
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
'use strict';
|
||||
|
||||
var test = require('tape');
|
||||
var debug = require('object-inspect');
|
||||
var forEach = require('foreach');
|
||||
var has = require('has');
|
||||
|
||||
var v = require('es-value-fixtures');
|
||||
var getSymbolDescription = require('../../helpers/getSymbolDescription');
|
||||
var getInferredName = require('../../helpers/getInferredName');
|
||||
|
||||
test('getSymbolDescription', function (t) {
|
||||
t.test('no symbols', { skip: v.hasSymbols }, function (st) {
|
||||
st['throws'](
|
||||
getSymbolDescription,
|
||||
SyntaxError,
|
||||
'requires Symbol support'
|
||||
);
|
||||
|
||||
st.end();
|
||||
});
|
||||
|
||||
forEach(v.nonSymbolPrimitives.concat(v.objects), function (nonSymbol) {
|
||||
t['throws'](
|
||||
function () { getSymbolDescription(nonSymbol); },
|
||||
v.hasSymbols ? TypeError : SyntaxError,
|
||||
debug(nonSymbol) + ' is not a Symbol'
|
||||
);
|
||||
});
|
||||
|
||||
t.test('with symbols', { skip: !v.hasSymbols }, function (st) {
|
||||
forEach(
|
||||
[
|
||||
[Symbol(), undefined],
|
||||
[Symbol(undefined), undefined],
|
||||
[Symbol(null), 'null'],
|
||||
[Symbol.iterator, 'Symbol.iterator'],
|
||||
[Symbol('foo'), 'foo']
|
||||
],
|
||||
function (pair) {
|
||||
var sym = pair[0];
|
||||
var desc = pair[1];
|
||||
st.equal(getSymbolDescription(sym), desc, debug(sym) + ' description is ' + debug(desc));
|
||||
}
|
||||
);
|
||||
|
||||
st.test('only possible when inference or native `Symbol.prototype.description` is supported', {
|
||||
skip: !getInferredName && !has(Symbol.prototype, 'description')
|
||||
}, function (s2t) {
|
||||
s2t.equal(getSymbolDescription(Symbol('')), '', 'Symbol("") description is ""');
|
||||
|
||||
s2t.end();
|
||||
});
|
||||
|
||||
st.test('only possible when global symbols are supported', {
|
||||
skip: !has(Symbol, 'for') || !has(Symbol, 'keyFor')
|
||||
}, function (s2t) {
|
||||
// eslint-disable-next-line no-restricted-properties
|
||||
s2t.equal(getSymbolDescription(Symbol['for']('')), '', 'Symbol.for("") description is ""');
|
||||
s2t.end();
|
||||
});
|
||||
|
||||
st.end();
|
||||
});
|
||||
|
||||
t.end();
|
||||
});
|
6
node_modules/es-abstract/test/helpers/index.js
generated
vendored
Normal file
6
node_modules/es-abstract/test/helpers/index.js
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
require('./getSymbolDescription');
|
||||
require('./isByteValue');
|
||||
require('./isCodePoint');
|
||||
require('./OwnPropertyKeys');
|
28
node_modules/es-abstract/test/helpers/isByteValue.js
generated
vendored
Normal file
28
node_modules/es-abstract/test/helpers/isByteValue.js
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
'use strict';
|
||||
|
||||
var test = require('tape');
|
||||
var forEach = require('foreach');
|
||||
var debug = require('object-inspect');
|
||||
|
||||
var isByteValue = require('../../helpers/isByteValue');
|
||||
var v = require('es-value-fixtures');
|
||||
|
||||
test('isByteValue', function (t) {
|
||||
forEach([].concat(
|
||||
v.notNonNegativeIntegers,
|
||||
-1,
|
||||
-42,
|
||||
-Infinity,
|
||||
Infinity,
|
||||
v.nonIntegerNumbers
|
||||
), function (nonByteValue) {
|
||||
t.equal(isByteValue(nonByteValue), false, debug(nonByteValue) + ' is not a byte value');
|
||||
});
|
||||
|
||||
for (var i = 0; i <= 255; i += 1) {
|
||||
t.equal(isByteValue(i), true, i + ' is a byte value');
|
||||
}
|
||||
t.equal(isByteValue(256), false, '256 is not a byte value');
|
||||
|
||||
t.end();
|
||||
});
|
20
node_modules/es-abstract/test/helpers/isCodePoint.js
generated
vendored
Normal file
20
node_modules/es-abstract/test/helpers/isCodePoint.js
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
var test = require('tape');
|
||||
var forEach = require('foreach');
|
||||
var debug = require('object-inspect');
|
||||
|
||||
var isCodePoint = require('../../helpers/isCodePoint');
|
||||
var v = require('es-value-fixtures');
|
||||
|
||||
test('isCodePoint', function (t) {
|
||||
forEach(v.notNonNegativeIntegers.concat(0x10FFFF + 1), function (nonCodePoints) {
|
||||
t.equal(isCodePoint(nonCodePoints), false, debug(nonCodePoints) + ' is not a Code Point');
|
||||
});
|
||||
|
||||
forEach([-0, 0, 1, 7, 42, 0x10FFFF], function (codePoint) {
|
||||
t.equal(isCodePoint(codePoint), true, debug(codePoint) + ' is a Code Point');
|
||||
});
|
||||
|
||||
t.end();
|
||||
});
|
27
node_modules/es-abstract/test/helpers/runManifestTest.js
generated
vendored
Normal file
27
node_modules/es-abstract/test/helpers/runManifestTest.js
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
'use strict';
|
||||
|
||||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
|
||||
var forEach = require('foreach');
|
||||
var keys = require('object-keys');
|
||||
|
||||
module.exports = function runManifestTest(test, ES, edition) {
|
||||
test('ES' + edition + ' manifest', { skip: !fs.readdirSync }, function (t) {
|
||||
var files = fs.readdirSync(path.join(__dirname, '../../' + edition), 'utf-8');
|
||||
var map = {
|
||||
AbstractEqualityComparison: 'Abstract Equality Comparison',
|
||||
AbstractRelationalComparison: 'Abstract Relational Comparison',
|
||||
StrictEqualityComparison: 'Strict Equality Comparison'
|
||||
};
|
||||
forEach(files, function (file) {
|
||||
var name = path.basename(file, path.extname(file));
|
||||
var actual = ES[map[name] || name];
|
||||
var expected = require(path.join(__dirname, '../../' + edition + '/', file)); // eslint-disable-line global-require
|
||||
t.equal(actual, expected, 'ES["' + name + '"] === ' + file);
|
||||
});
|
||||
var actualCount = keys(ES).length;
|
||||
t.equal(actualCount, files.length, 'expected ' + files.length + ' files, got ' + actualCount);
|
||||
t.end();
|
||||
});
|
||||
};
|
Reference in New Issue
Block a user