75 lines
		
	
	
	
		
			2.3 KiB
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
	
		
			2.3 KiB
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								// Copyright 2020 Signal Messenger, LLC
							 | 
						||
| 
								 | 
							
								// SPDX-License-Identifier: AGPL-3.0-only
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import { assert } from 'chai';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import { normalizeGroupCallTimestamp } from '../../../util/ringrtc/normalizeGroupCallTimestamp';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('normalizeGroupCallTimestamp', () => {
							 | 
						||
| 
								 | 
							
								  it('returns undefined if passed NaN', () => {
							 | 
						||
| 
								 | 
							
								    assert.isUndefined(normalizeGroupCallTimestamp(NaN));
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('returns undefined if passed 0', () => {
							 | 
						||
| 
								 | 
							
								    assert.isUndefined(normalizeGroupCallTimestamp(0));
							 | 
						||
| 
								 | 
							
								    assert.isUndefined(normalizeGroupCallTimestamp(-0));
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('returns undefined if passed a negative number', () => {
							 | 
						||
| 
								 | 
							
								    assert.isUndefined(normalizeGroupCallTimestamp(-1));
							 | 
						||
| 
								 | 
							
								    assert.isUndefined(normalizeGroupCallTimestamp(-123));
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('returns undefined if passed a string that cannot be parsed as a number', () => {
							 | 
						||
| 
								 | 
							
								    assert.isUndefined(normalizeGroupCallTimestamp(''));
							 | 
						||
| 
								 | 
							
								    assert.isUndefined(normalizeGroupCallTimestamp('uhhh'));
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('returns undefined if passed a BigInt of 0', () => {
							 | 
						||
| 
								 | 
							
								    assert.isUndefined(normalizeGroupCallTimestamp(BigInt(0)));
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('returns undefined if passed a negative BigInt', () => {
							 | 
						||
| 
								 | 
							
								    assert.isUndefined(normalizeGroupCallTimestamp(BigInt(-1)));
							 | 
						||
| 
								 | 
							
								    assert.isUndefined(normalizeGroupCallTimestamp(BigInt(-123)));
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('returns undefined if passed a non-parseable type', () => {
							 | 
						||
| 
								 | 
							
								    [
							 | 
						||
| 
								 | 
							
								      undefined,
							 | 
						||
| 
								 | 
							
								      null,
							 | 
						||
| 
								 | 
							
								      {},
							 | 
						||
| 
								 | 
							
								      [],
							 | 
						||
| 
								 | 
							
								      [123],
							 | 
						||
| 
								 | 
							
								      Symbol('123'),
							 | 
						||
| 
								 | 
							
								      { [Symbol.toPrimitive]: () => 123 },
							 | 
						||
| 
								 | 
							
								      // eslint-disable-next-line no-new-wrappers
							 | 
						||
| 
								 | 
							
								      new Number(123),
							 | 
						||
| 
								 | 
							
								    ].forEach(value => {
							 | 
						||
| 
								 | 
							
								      assert.isUndefined(normalizeGroupCallTimestamp(value));
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('returns positive numbers passed in', () => {
							 | 
						||
| 
								 | 
							
								    assert.strictEqual(normalizeGroupCallTimestamp(1), 1);
							 | 
						||
| 
								 | 
							
								    assert.strictEqual(normalizeGroupCallTimestamp(123), 123);
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('parses strings as numbers', () => {
							 | 
						||
| 
								 | 
							
								    assert.strictEqual(normalizeGroupCallTimestamp('1'), 1);
							 | 
						||
| 
								 | 
							
								    assert.strictEqual(normalizeGroupCallTimestamp('123'), 123);
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('only parses the first 15 characters of a string', () => {
							 | 
						||
| 
								 | 
							
								    assert.strictEqual(
							 | 
						||
| 
								 | 
							
								      normalizeGroupCallTimestamp('12345678901234567890123456789'),
							 | 
						||
| 
								 | 
							
								      123456789012345
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('converts positive BigInts to numbers', () => {
							 | 
						||
| 
								 | 
							
								    assert.strictEqual(normalizeGroupCallTimestamp(BigInt(1)), 1);
							 | 
						||
| 
								 | 
							
								    assert.strictEqual(normalizeGroupCallTimestamp(BigInt(123)), 123);
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								});
							 |