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