60 lines
1.1 KiB
JavaScript
60 lines
1.1 KiB
JavaScript
'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();
|
|
});
|