1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- '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();
- });
|