Files
NapCatQQ/.pnpm-store/v3/files/13/c199335d405f1e0fc5b3d96e3c2c39a3340db5a679a1428a0b66307b029a522b3a984ce94afcb2fad6efc66c7b36bb41098d45d1502ce54b5c0cbedf945ff4
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

83 lines
2.7 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
'use strict';
var keys = require('object-keys');
var map = require('array.prototype.map');
var define = require('define-properties');
var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
module.exports = function (entries, t) {
var a = {};
var b = {};
var c = {};
var obj = { a: a, b: b, c: c };
t.deepEqual(entries(obj), [['a', a], ['b', b], ['c', c]], 'basic support');
t.deepEqual(entries({ a: a, b: a, c: c }), [['a', a], ['b', a], ['c', c]], 'duplicate entries are included');
t.test('entries are in the same order as keys', function (st) {
var object = { a: a, b: b };
object[0] = 3;
object.c = c;
object[1] = 4;
delete object[0];
var objKeys = keys(object);
var objEntries = map(objKeys, function (key) {
return [key, object[key]];
});
st.deepEqual(entries(object), objEntries, 'entries match key order');
st.end();
});
t.test('non-enumerable properties are omitted', { skip: !Object.defineProperty }, function (st) {
var object = { a: a, b: b };
Object.defineProperty(object, 'c', { enumerable: false, value: c });
st.deepEqual(entries(object), [['a', a], ['b', b]], 'non-enumerable property‘s value is omitted');
st.end();
});
t.test('inherited properties are omitted', function (st) {
var F = function G() {};
F.prototype.a = a;
var f = new F();
f.b = b;
st.deepEqual(entries(f), [['b', b]], 'only own properties are included');
st.end();
});
t.test('Symbol properties are omitted', { skip: !hasSymbols }, function (st) {
var object = { a: a, b: b, c: c };
var enumSym = Symbol('enum');
var nonEnumSym = Symbol('non enum');
object[enumSym] = enumSym;
object.d = enumSym;
Object.defineProperty(object, nonEnumSym, { enumerable: false, value: nonEnumSym });
st.deepEqual(entries(object), [['a', a], ['b', b], ['c', c], ['d', enumSym]], 'symbol properties are omitted');
st.end();
});
t.test('not-yet-visited keys deleted on [[Get]] must not show up in output', { skip: !define.supportsDescriptors }, function (st) {
var o = { a: 1, b: 2, c: 3 };
Object.defineProperty(o, 'a', {
get: function () {
delete this.b;
return 1;
}
});
st.deepEqual(entries(o), [['a', 1], ['c', 3]], 'when "b" is deleted prior to being visited, it should not show up');
st.end();
});
t.test('not-yet-visited keys made non-enumerable on [[Get]] must not show up in output', { skip: !define.supportsDescriptors }, function (st) {
var o = { a: 'A', b: 'B' };
Object.defineProperty(o, 'a', {
get: function () {
Object.defineProperty(o, 'b', { enumerable: false });
return 'A';
}
});
st.deepEqual(entries(o), [['a', 'A']], 'when "b" is made non-enumerable prior to being visited, it should not show up');
st.end();
});
};