LevelledTopologicalSorter.spec.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import 'reflect-metadata';
  2. import { assert } from 'chai';
  3. import { InversifyContainerFacade } from '../../../src/container/InversifyContainerFacade';
  4. import { ServiceIdentifiers } from '../../../src/container/ServiceIdentifiers';
  5. import { IInversifyContainerFacade } from '../../../src/interfaces/container/IInversifyContainerFacade';
  6. import { ILevelledTopologicalSorter } from '../../../src/interfaces/utils/ILevelledTopologicalSorter';
  7. describe('EscapeSequenceEncoder', () => {
  8. describe('encode', () => {
  9. let levelledTopologicalSorter: ILevelledTopologicalSorter;
  10. beforeEach(() => {
  11. const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade();
  12. inversifyContainerFacade.load('', '', {});
  13. levelledTopologicalSorter = inversifyContainerFacade
  14. .get<ILevelledTopologicalSorter>(ServiceIdentifiers.ILevelledTopologicalSorter);
  15. });
  16. describe('Base sort', () => {
  17. beforeEach(() => {
  18. levelledTopologicalSorter.add('A', 'B');
  19. levelledTopologicalSorter.add('B');
  20. levelledTopologicalSorter.add('C', 'B');
  21. levelledTopologicalSorter.add('D');
  22. levelledTopologicalSorter.add('E');
  23. levelledTopologicalSorter.add('F', 'A');
  24. levelledTopologicalSorter.add('F', 'E');
  25. });
  26. describe('Variant #1: Base linear sort', () => {
  27. const expectedSortedItems: string[] = [
  28. 'F',
  29. 'A',
  30. 'C',
  31. 'B',
  32. 'D',
  33. 'E',
  34. ];
  35. let sortedItems: string[];
  36. beforeEach(() => {
  37. sortedItems = levelledTopologicalSorter.sort();
  38. });
  39. it('should topologically linear sort items', () => {
  40. assert.deepEqual(sortedItems, expectedSortedItems);
  41. });
  42. });
  43. describe('Variant #1: Base sort with grouping', () => {
  44. const expectedSortedItems: string[][] = [
  45. ['C', 'D', 'F'],
  46. ['A', 'E'],
  47. ['B']
  48. ];
  49. let sortedItems: string[][];
  50. beforeEach(() => {
  51. sortedItems = levelledTopologicalSorter.sortByGroups();
  52. });
  53. it('should topologically linear sort items', () => {
  54. assert.deepEqual(sortedItems, expectedSortedItems);
  55. });
  56. });
  57. });
  58. });
  59. });