/* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import {TimestampConverterUtils} from 'test/unit/timestamp_converter_utils'; import {UnitTestUtils} from 'test/unit/utils'; import {TimestampUtils} from './timestamp_utils'; describe('TimestampUtils', () => { const MILLISECOND = BigInt(1000000); const SECOND = BigInt(1000) * MILLISECOND; const MINUTE = BigInt(60) * SECOND; const HOUR = BigInt(60) * MINUTE; beforeAll(() => { jasmine.addCustomEqualityTester(UnitTestUtils.timestampEqualityTester); }); describe('compareFn', () => { it('allows to sort arrays', () => { const array = [ TimestampConverterUtils.makeRealTimestamp(100n), TimestampConverterUtils.makeRealTimestamp(10n), TimestampConverterUtils.makeRealTimestamp(12n), TimestampConverterUtils.makeRealTimestamp(110n), TimestampConverterUtils.makeRealTimestamp(11n), ]; array.sort(TimestampUtils.compareFn); const expected = [ TimestampConverterUtils.makeRealTimestamp(10n), TimestampConverterUtils.makeRealTimestamp(11n), TimestampConverterUtils.makeRealTimestamp(12n), TimestampConverterUtils.makeRealTimestamp(100n), TimestampConverterUtils.makeRealTimestamp(110n), ]; expect(array).toEqual(expected); }); }); describe('isNsFormat', () => { it('accepts all expected inputs', () => { expect(TimestampUtils.isNsFormat('123')).toBeTrue(); expect(TimestampUtils.isNsFormat('123ns')).toBeTrue(); expect(TimestampUtils.isNsFormat('123 ns')).toBeTrue(); expect(TimestampUtils.isNsFormat(' 123 ns ')).toBeTrue(); expect(TimestampUtils.isNsFormat(' 123 ')).toBeTrue(); }); it('rejects all expected inputs', () => { expect(TimestampUtils.isNsFormat('1a23')).toBeFalse(); expect(TimestampUtils.isNsFormat('a123 ns')).toBeFalse(); expect(TimestampUtils.isNsFormat('')).toBeFalse(); }); }); describe('isHumanElapsedTimeFormat', () => { it('accepts all expected inputs', () => { expect(TimestampUtils.isHumanElapsedTimeFormat('1000ns')).toBeTrue(); expect(TimestampUtils.isHumanElapsedTimeFormat('1ms')).toBeTrue(); expect(TimestampUtils.isHumanElapsedTimeFormat('1s')).toBeTrue(); expect(TimestampUtils.isHumanElapsedTimeFormat('1s0ms')).toBeTrue(); expect(TimestampUtils.isHumanElapsedTimeFormat('1s0ms0ns')).toBeTrue(); expect(TimestampUtils.isHumanElapsedTimeFormat('0d1s1ms')).toBeTrue(); expect(TimestampUtils.isHumanElapsedTimeFormat('1h0m')).toBeTrue(); expect(TimestampUtils.isHumanElapsedTimeFormat('1h1m1s1ms')).toBeTrue(); expect(TimestampUtils.isHumanElapsedTimeFormat('1d0s1ms')).toBeTrue(); expect(TimestampUtils.isHumanElapsedTimeFormat('1d1h0m1s1ms')).toBeTrue(); expect(TimestampUtils.isHumanElapsedTimeFormat('1d')).toBeTrue(); }); it('rejects all expected inputs', () => { expect(TimestampUtils.isHumanElapsedTimeFormat('1n')).toBeFalse(); expect(TimestampUtils.isHumanElapsedTimeFormat('1hr')).toBeFalse(); expect(TimestampUtils.isHumanElapsedTimeFormat('1min')).toBeFalse(); expect(TimestampUtils.isHumanElapsedTimeFormat('1sec')).toBeFalse(); expect(TimestampUtils.isHumanElapsedTimeFormat('1')).toBeFalse(); expect(TimestampUtils.isHumanElapsedTimeFormat('1m0')).toBeFalse(); }); }); describe('isRealTimeOnlyFormat', () => { it('accepts all expected inputs', () => { expect(TimestampUtils.isRealTimeOnlyFormat('22:04:54.186')).toBeTrue(); expect(TimestampUtils.isRealTimeOnlyFormat('22:04:54.186777')).toBeTrue(); expect( TimestampUtils.isRealTimeOnlyFormat('22:04:54.186234769'), ).toBeTrue(); }); it('rejects all expected inputs', () => { expect( TimestampUtils.isRealTimeOnlyFormat('2022-11-10, 22:04:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isRealTimeOnlyFormat('2022-11-10T22:04:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isRealTimeOnlyFormat('2:04:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isRealTimeOnlyFormat('25:04:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isRealTimeOnlyFormat('22:4:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isRealTimeOnlyFormat('22:04:4.186123456'), ).toBeFalse(); expect( TimestampUtils.isRealTimeOnlyFormat('22:60:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isRealTimeOnlyFormat('22:04:60.186123456'), ).toBeFalse(); expect( TimestampUtils.isRealTimeOnlyFormat('22:04:54.1861234562'), ).toBeFalse(); expect(TimestampUtils.isRealTimeOnlyFormat('22:04:54.')).toBeFalse(); }); }); describe('isRealDateTimeFormat', () => { it('accepts all expected inputs', () => { expect( TimestampUtils.isRealDateTimeFormat('2022-11-10, 22:04:54.186'), ).toBeTrue(); expect( TimestampUtils.isRealDateTimeFormat('2022-11-10, 22:04:54.186777'), ).toBeTrue(); expect( TimestampUtils.isRealDateTimeFormat('2022-11-10, 22:04:54.186234769'), ).toBeTrue(); }); it('rejects all expected inputs', () => { expect( TimestampUtils.isRealDateTimeFormat('2022-11-10T22:04:54.186234769'), ).toBeFalse(); expect( TimestampUtils.isRealDateTimeFormat('2022-13-10, 22:04:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isRealDateTimeFormat('2022-11-32, 22:04:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isRealDateTimeFormat('2022-11-10, 25:04:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isRealDateTimeFormat('2022-11-10, 22:60:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isRealDateTimeFormat('2022-11-10, 22:04:60.186123456'), ).toBeFalse(); expect( TimestampUtils.isRealDateTimeFormat('2022-11-10, 22:04:54.1861234568'), ).toBeFalse(); expect( TimestampUtils.isRealDateTimeFormat('2022-11-10, 22:04:54.'), ).toBeFalse(); }); }); describe('isISOFormat', () => { it('accepts all expected inputs', () => { expect(TimestampUtils.isISOFormat('2022-11-10T22:04:54.186')).toBeTrue(); expect( TimestampUtils.isISOFormat('2022-11-10T22:04:54.186777'), ).toBeTrue(); expect( TimestampUtils.isISOFormat('2022-11-10T22:04:54.186234769'), ).toBeTrue(); }); it('rejects all expected inputs', () => { expect( TimestampUtils.isISOFormat('2022-11-10, 22:04:54.186234769'), ).toBeFalse(); expect( TimestampUtils.isISOFormat('2022-13-10T22:04:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isISOFormat('2022-11-32T22:04:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isISOFormat('2022-11-10T25:04:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isISOFormat('2022-11-10T22:60:54.186123456'), ).toBeFalse(); expect( TimestampUtils.isISOFormat('2022-11-10T22:04:60.186123456'), ).toBeFalse(); expect( TimestampUtils.isISOFormat('2022-11-10T22:04:54.1861234568'), ).toBeFalse(); expect(TimestampUtils.isISOFormat('2022-11-10T22:04:54.')).toBeFalse(); }); }); });