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.
		
		
		
		
		
			
		
			
				
					47 lines
				
				1.6 KiB
			
		
		
			
		
	
	
					47 lines
				
				1.6 KiB
			| 
											3 years ago
										 | 'use strict' | ||
|  | const test = require('tape') | ||
|  | const sleep = require('.') | ||
|  | 
 | ||
|  | test('blocks event loop for given amount of milliseconds', ({ is, end }) => { | ||
|  |   const now = Date.now() | ||
|  |   setTimeout(() => { | ||
|  |     const delta = Date.now() - now | ||
|  |     const fuzzyDelta = Math.floor(delta / 10) * 10 // allow up to 10ms of execution lag
 | ||
|  |     is(fuzzyDelta, 1000) | ||
|  |     end() | ||
|  |   }, 100) | ||
|  |   sleep(1000) | ||
|  | }) | ||
|  | 
 | ||
|  | if (typeof BigInt !== 'undefined') { | ||
|  | 
 | ||
|  |   test('allows ms to be supplied as a BigInt number', ({ is, end }) => { | ||
|  |     const now = Date.now() | ||
|  |     setTimeout(() => { | ||
|  |       const delta = Date.now() - now | ||
|  |       const fuzzyDelta = Math.floor(delta / 10) * 10 // allow up to 10ms of execution lag
 | ||
|  |       is(fuzzyDelta, 1000) | ||
|  |       end() | ||
|  |     }, 100) | ||
|  |     sleep(BigInt(1000)) // avoiding n notation as this will error on legacy node/browsers
 | ||
|  |   }) | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | test('throws range error if ms less than 0', ({ throws, end }) => { | ||
|  |   throws(() => sleep(-1), RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')) | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('throws range error if ms is Infinity', ({ throws, end }) => { | ||
|  |   throws(() => sleep(Infinity), RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')) | ||
|  |   end() | ||
|  | }) | ||
|  | 
 | ||
|  | test('throws range error if ms is not a number or bigint', ({ throws, end }) => { | ||
|  |   throws(() => sleep('Infinity'), TypeError('sleep: ms must be a number')) | ||
|  |   throws(() => sleep('foo'), TypeError('sleep: ms must be a number')) | ||
|  |   throws(() => sleep({a: 1}), TypeError('sleep: ms must be a number')) | ||
|  |   throws(() => sleep([1,2,3]), TypeError('sleep: ms must be a number')) | ||
|  |   end() | ||
|  | }) |