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