diff options
Diffstat (limited to 'node_modules/es-to-primitive/test/es5.js')
-rw-r--r-- | node_modules/es-to-primitive/test/es5.js | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/node_modules/es-to-primitive/test/es5.js b/node_modules/es-to-primitive/test/es5.js index 8b80ff5bd..79444b0b4 100644 --- a/node_modules/es-to-primitive/test/es5.js +++ b/node_modules/es-to-primitive/test/es5.js @@ -6,6 +6,7 @@ var is = require('object-is'); var forEach = require('foreach'); var functionName = require('function.prototype.name'); var debug = require('object-inspect'); +var hasSymbols = require('has-symbols')(); test('function properties', function (t) { t.equal(toPrimitive.length, 1, 'length is 1'); @@ -25,6 +26,29 @@ test('primitives', function (t) { t.end(); }); +test('Symbols', { skip: !hasSymbols }, function (t) { + var symbols = [ + Symbol('foo'), + Symbol.iterator, + Symbol['for']('foo') // eslint-disable-line no-restricted-properties + ]; + forEach(symbols, function (sym) { + t.equal(toPrimitive(sym), sym, 'toPrimitive(' + debug(sym) + ') returns the same value'); + t.equal(toPrimitive(sym, String), sym, 'toPrimitive(' + debug(sym) + ', String) returns the same value'); + t.equal(toPrimitive(sym, Number), sym, 'toPrimitive(' + debug(sym) + ', Number) returns the same value'); + }); + + var primitiveSym = Symbol('primitiveSym'); + var stringSym = Symbol.prototype.toString.call(primitiveSym); + var objectSym = Object(primitiveSym); + t.equal(toPrimitive(objectSym), primitiveSym, 'toPrimitive(' + debug(objectSym) + ') returns ' + debug(primitiveSym)); + + // This is different from ES2015, as the ES5 algorithm doesn't account for the existence of Symbols: + t.equal(toPrimitive(objectSym, String), stringSym, 'toPrimitive(' + debug(objectSym) + ', String) returns ' + debug(stringSym)); + t.equal(toPrimitive(objectSym, Number), primitiveSym, 'toPrimitive(' + debug(objectSym) + ', Number) returns ' + debug(primitiveSym)); + t.end(); +}); + test('Arrays', function (t) { var arrays = [[], ['a', 'b'], [1, 2]]; forEach(arrays, function (arr) { |