From f8044a724888790ba0a013d0b80feb1baf0f2544 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 30 Dec 2019 20:44:24 +0300 Subject: [PATCH] Added base tests for LevelledTopologicalSorter --- .../utils/ILevelledTopologicalSorter.d.ts | 2 +- test/index.spec.ts | 1 + .../utils/LevelledTopologicalSorter.spec.ts | 75 +++++++++++++++++++ 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 test/unit-tests/utils/LevelledTopologicalSorter.spec.ts diff --git a/src/interfaces/utils/ILevelledTopologicalSorter.d.ts b/src/interfaces/utils/ILevelledTopologicalSorter.d.ts index f8b05510..137cfc29 100644 --- a/src/interfaces/utils/ILevelledTopologicalSorter.d.ts +++ b/src/interfaces/utils/ILevelledTopologicalSorter.d.ts @@ -6,7 +6,7 @@ export interface ILevelledTopologicalSorter { */ add ( precedent: TValue, - consequent: TValue | null + consequent?: TValue | null ): this; /** diff --git a/test/index.spec.ts b/test/index.spec.ts index 4fc10522..0f0bfe23 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -34,6 +34,7 @@ import './unit-tests/storages/MapStorage.spec'; import './unit-tests/utils/ArrayUtils.spec'; import './unit-tests/utils/CryptUtils.spec'; import './unit-tests/utils/EscapeSequenceEncoder.spec'; +import './unit-tests/utils/LevelledTopologicalSorter.spec'; import './unit-tests/utils/NumberUtils.spec'; import './unit-tests/utils/Utils.spec'; diff --git a/test/unit-tests/utils/LevelledTopologicalSorter.spec.ts b/test/unit-tests/utils/LevelledTopologicalSorter.spec.ts new file mode 100644 index 00000000..4616d861 --- /dev/null +++ b/test/unit-tests/utils/LevelledTopologicalSorter.spec.ts @@ -0,0 +1,75 @@ +import 'reflect-metadata'; + +import { assert } from 'chai'; + +import { InversifyContainerFacade } from '../../../src/container/InversifyContainerFacade'; +import { ServiceIdentifiers } from '../../../src/container/ServiceIdentifiers'; + +import { IInversifyContainerFacade } from '../../../src/interfaces/container/IInversifyContainerFacade'; +import { ILevelledTopologicalSorter } from '../../../src/interfaces/utils/ILevelledTopologicalSorter'; + + +describe('EscapeSequenceEncoder', () => { + describe('encode', () => { + let levelledTopologicalSorter: ILevelledTopologicalSorter; + + beforeEach(() => { + const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade(); + + inversifyContainerFacade.load('', '', {}); + levelledTopologicalSorter = inversifyContainerFacade + .get(ServiceIdentifiers.ILevelledTopologicalSorter); + }); + + describe('Base sort', () => { + beforeEach(() => { + levelledTopologicalSorter.add('A', 'B'); + levelledTopologicalSorter.add('B'); + levelledTopologicalSorter.add('C', 'B'); + levelledTopologicalSorter.add('D'); + levelledTopologicalSorter.add('E'); + levelledTopologicalSorter.add('F', 'A'); + levelledTopologicalSorter.add('F', 'E'); + }); + + describe('Variant #1: Base linear sort', () => { + const expectedSortedItems: string[] = [ + 'F', + 'A', + 'C', + 'B', + 'D', + 'E', + ]; + + let sortedItems: string[]; + + beforeEach(() => { + sortedItems = levelledTopologicalSorter.sort(); + }); + + it('should topologically linear sort items', () => { + assert.deepEqual(sortedItems, expectedSortedItems); + }); + }); + + describe('Variant #1: Base sort with grouping', () => { + const expectedSortedItems: string[][] = [ + ['C', 'D', 'F'], + ['A', 'E'], + ['B'] + ]; + + let sortedItems: string[][]; + + beforeEach(() => { + sortedItems = levelledTopologicalSorter.sortByGroups(); + }); + + it('should topologically linear sort items', () => { + assert.deepEqual(sortedItems, expectedSortedItems); + }); + }); + }); + }); +});