'use strict'; var test = require('tape'); var inspect = require('object-inspect'); var is = require('object-is'); var forEach = require('for-each'); var v = require('es-value-fixtures'); var unboxPrimitive = require('..'); test('primitives', function (t) { forEach([null, undefined], function (nullValue) { t['throws']( // @ts-expect-error function () { unboxPrimitive(nullValue); }, TypeError, inspect(nullValue) + ' is not a primitive' ); }); // eslint-disable-next-line no-extra-parens forEach(/** @type {typeof v.nonNullPrimitives} */ ([].concat( // @ts-expect-error TS sucks with concat v.nonNullPrimitives, v.zeroes, v.infinities, NaN )), function (primitive) { var obj = Object(primitive); t.ok( is(unboxPrimitive(obj), primitive), inspect(obj) + 'unboxes to ' + inspect(primitive) ); }); t.end(); }); test('objects', function (t) { // eslint-disable-next-line no-extra-parens forEach(/** @type {typeof v.objects} */ (/** @type {unknown} */ ([].concat( // @ts-expect-error TS sucks with concat v.objects, {}, [], function () {}, /a/g, new Date() ))), function (object) { t['throws']( // @ts-expect-error function () { unboxPrimitive(object); }, TypeError, inspect(object) + ' is not a primitive' ); }); t.end(); });