'use strict'; var test = require('tape'); var inspect = require('object-inspect'); var forEach = require('for-each'); var v = require('es-value-fixtures'); var whichBoxedPrimitive = require('../'); var objects = [ /a/g, new Date(), function () {}, [], {} ].concat(v.objects); test('isBoxedPrimitive', function (t) { t.test('unboxed primitives', function (st) { forEach(v.primitives, function (primitive) { st.equal(null, whichBoxedPrimitive(primitive), inspect(primitive) + ' is a primitive, but not a boxed primitive'); }); st.end(); }); t.test('boxed primitives', function (st) { forEach(v.primitives, function (primitive) { if (primitive != null) { // eslint-disable-line eqeqeq var boxed = Object(primitive); var expected = boxed.constructor.name; st.equal(typeof expected, 'string', 'expected is string'); st.equal(whichBoxedPrimitive(boxed), expected, inspect(boxed) + ' is a boxed primitive: ' + expected); } }); st.end(); }); t.test('non-primitive objects', function (st) { forEach(objects, function (object) { st.equal(undefined, whichBoxedPrimitive(object), inspect(object) + ' is not a primitive, boxed or otherwise'); }); st.end(); }); t.end(); });