74 lines
2.3 KiB
TypeScript
74 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);
|
|
});
|
|
});
|