Changeset 79a0317 for imaps-frontend/node_modules/is-symbol/test
Legend:
- Unmodified
- Added
- Removed
-
imaps-frontend/node_modules/is-symbol/test/index.js
r0c6b92a r79a0317 2 2 3 3 var test = require('tape'); 4 var forEach = require('for-each'); 5 var v = require('es-value-fixtures'); 6 4 7 var isSymbol = require('../index'); 5 8 6 var forEach = function (arr, func) {7 var i;8 for (i = 0; i < arr.length; ++i) {9 func(arr[i], i, arr);10 }11 };12 13 9 var hasSymbols = require('has-symbols')(); 10 var hasToStringTag = require('has-tostringtag/shams')(); 14 11 var inspect = require('object-inspect'); 15 var debug = function (v, m) { return inspect(v) + ' ' + m; };16 12 17 13 test('non-symbol values', function (t) { 18 var nonSymbols = [ 19 true, 20 false, 14 var nonSymbols = v.nonSymbolPrimitives.concat( 21 15 Object(true), 22 16 Object(false), 23 null, 24 undefined, 17 // @ts-expect-error TS sucks with concat 25 18 {}, 26 19 [], 27 20 /a/g, 28 'string',29 42,30 21 new Date(), 31 22 function () {}, 32 23 NaN 33 ];24 ); 34 25 t.plan(nonSymbols.length); 35 26 forEach(nonSymbols, function (nonSymbol) { 36 t.equal( false, isSymbol(nonSymbol), debug(nonSymbol, 'is not a symbol'));27 t.equal(isSymbol(nonSymbol), false, inspect(nonSymbol) + ' is not a symbol'); 37 28 }); 38 29 t.end(); … … 42 33 t.test('real symbol valueOf', { skip: !hasSymbols }, function (st) { 43 34 var fakeSymbol = { valueOf: function () { return Symbol('foo'); } }; 44 st.equal( false, isSymbol(fakeSymbol), 'object with valueOf returning a symbol is not a symbol');35 st.equal(isSymbol(fakeSymbol), false, 'object with valueOf returning a symbol is not a symbol'); 45 36 st.end(); 46 37 }); 47 38 48 t.test('faked @@toStringTag', { skip: !hasSymbols || !Symbol.toStringTag }, function (st) { 39 t.test('faked @@toStringTag', { skip: !hasToStringTag }, function (st) { 40 /** @type {{ valueOf(): unknown; [Symbol.toStringTag]?: unknown }} */ 49 41 var fakeSymbol = { valueOf: function () { return Symbol('foo'); } }; 50 42 fakeSymbol[Symbol.toStringTag] = 'Symbol'; 51 st.equal(false, isSymbol(fakeSymbol), 'object with fake Symbol @@toStringTag and valueOf returning a symbol is not a symbol'); 43 st.equal(isSymbol(fakeSymbol), false, 'object with fake Symbol @@toStringTag and valueOf returning a symbol is not a symbol'); 44 45 /** @type {{ valueOf(): unknown; [Symbol.toStringTag]?: unknown }} */ 52 46 var notSoFakeSymbol = { valueOf: function () { return 42; } }; 53 47 notSoFakeSymbol[Symbol.toStringTag] = 'Symbol'; 54 st.equal( false, isSymbol(notSoFakeSymbol), 'object with fake Symbol @@toStringTag and valueOf not returning a symbol is not a symbol');48 st.equal(isSymbol(notSoFakeSymbol), false, 'object with fake Symbol @@toStringTag and valueOf not returning a symbol is not a symbol'); 55 49 st.end(); 56 50 }); 57 51 58 52 var fakeSymbolString = { toString: function () { return 'Symbol(foo)'; } }; 59 t.equal( false, isSymbol(fakeSymbolString), 'object with toString returning Symbol(foo) is not a symbol');53 t.equal(isSymbol(fakeSymbolString), false, 'object with toString returning Symbol(foo) is not a symbol'); 60 54 61 55 t.end(); … … 64 58 test('Symbol support', { skip: !hasSymbols }, function (t) { 65 59 t.test('well-known Symbols', function (st) { 60 /** @type {(name: string) => name is Exclude<keyof SymbolConstructor, 'for' | 'keyFor'>} */ 66 61 var isWellKnown = function filterer(name) { 67 62 return name !== 'for' && name !== 'keyFor' && !(name in filterer); … … 69 64 var wellKnownSymbols = Object.getOwnPropertyNames(Symbol).filter(isWellKnown); 70 65 wellKnownSymbols.forEach(function (name) { 71 var sym = Symbol[name]; 72 st.equal(true, isSymbol(sym), debug(sym, ' is a symbol')); 66 // eslint-disable-next-line no-extra-parens 67 var sym = Symbol[/** @type {keyof SymbolConstructor} */ (name)]; 68 st.equal(isSymbol(sym), true, inspect(sym) + ' is a symbol'); 73 69 }); 74 70 st.end(); … … 76 72 77 73 t.test('user-created symbols', function (st) { 78 var symbols = [74 var symbols = v.symbols.concat( 79 75 Symbol(), 80 76 Symbol('foo'), 81 77 Symbol['for']('foo'), 82 78 Object(Symbol('object')) 83 ];79 ); 84 80 symbols.forEach(function (sym) { 85 st.equal( true, isSymbol(sym), debug(sym, ' is a symbol'));81 st.equal(isSymbol(sym), true, inspect(sym) + ' is a symbol'); 86 82 }); 87 83 st.end();
Note:
See TracChangeset
for help on using the changeset viewer.