You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.1 KiB
59 lines
1.1 KiB
'use strict'; |
|
|
|
var test = require('tape'); |
|
var inspect = require('object-inspect'); |
|
var is = require('object-is'); |
|
var forEach = require('for-each'); |
|
var hasSymbols = require('has-symbols')(); |
|
var hasBigInts = require('has-bigints')(); |
|
|
|
var unboxPrimitive = require('..'); |
|
|
|
var debug = function (v, m) { return inspect(v) + ' ' + m; }; |
|
|
|
test('primitives', function (t) { |
|
var primitives = [ |
|
true, |
|
false, |
|
'', |
|
'foo', |
|
42, |
|
NaN, |
|
Infinity, |
|
0 |
|
]; |
|
if (hasSymbols) { |
|
primitives.push(Symbol(), Symbol.iterator, Symbol('f')); |
|
} |
|
if (hasBigInts) { |
|
primitives.push(BigInt(42), BigInt(0)); |
|
} |
|
forEach(primitives, function (primitive) { |
|
var obj = Object(primitive); |
|
t.ok( |
|
is(unboxPrimitive(obj), primitive), |
|
debug(obj, 'unboxes to ' + inspect(primitive)) |
|
); |
|
}); |
|
|
|
t.end(); |
|
}); |
|
|
|
test('objects', function (t) { |
|
var objects = [ |
|
{}, |
|
[], |
|
function () {}, |
|
/a/g, |
|
new Date() |
|
]; |
|
forEach(objects, function (object) { |
|
t['throws']( |
|
function () { unboxPrimitive(object); }, |
|
TypeError, |
|
debug(object, 'is not a primitive') |
|
); |
|
}); |
|
|
|
t.end(); |
|
});
|
|
|