SetUtils.spec.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import 'reflect-metadata';
  2. import { assert } from 'chai';
  3. import { ServiceIdentifiers } from '../../../src/container/ServiceIdentifiers';
  4. import { IInversifyContainerFacade } from '../../../src/interfaces/container/IInversifyContainerFacade';
  5. import { ISetUtils } from '../../../src/interfaces/utils/ISetUtils';
  6. import { InversifyContainerFacade } from '../../../src/container/InversifyContainerFacade';
  7. describe('SetUtils', () => {
  8. let setUtils: ISetUtils;
  9. before(() => {
  10. const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade();
  11. inversifyContainerFacade.load('', '', {});
  12. setUtils = inversifyContainerFacade.get<ISetUtils>(ServiceIdentifiers.ISetUtils);
  13. });
  14. describe('getLastElement', () => {
  15. describe('empty set', () => {
  16. const set: Set<string> = new Set();
  17. const expectedLastElement: undefined = undefined;
  18. let lastElement: string | undefined;
  19. before(() => {
  20. lastElement = setUtils.getLastElement(set);
  21. });
  22. it('should return undefined if set is empty', () => {
  23. assert.equal(lastElement, expectedLastElement);
  24. });
  25. });
  26. describe('set length: `1`', () => {
  27. const set: Set<string> = new Set(['foo']);
  28. const expectedLastElement: string = 'foo';
  29. let lastElement: string | undefined;
  30. before(() => {
  31. lastElement = setUtils.getLastElement(set);
  32. });
  33. it('should return first element for set with length: `1`', () => {
  34. assert.equal(lastElement, expectedLastElement);
  35. });
  36. });
  37. describe('set length: `3`', () => {
  38. const set: Set<string> = new Set(['foo', 'bar', 'baz']);
  39. const expectedLastElement: string = 'baz';
  40. let lastElement: string | undefined;
  41. before(() => {
  42. lastElement = setUtils.getLastElement(set);
  43. });
  44. it('should return last element for set with length: `3`', () => {
  45. assert.equal(lastElement, expectedLastElement);
  46. });
  47. });
  48. describe('changed set with length: `2`', () => {
  49. const set: Set<string> = new Set(['foo', 'bar', 'baz']);
  50. set.add('bark');
  51. set.delete('bark');
  52. set.delete('bar');
  53. const expectedLastElement: string = 'baz';
  54. let lastElement: string | undefined;
  55. before(() => {
  56. lastElement = setUtils.getLastElement(set);
  57. });
  58. it('should return last element for changed set with length: `2`', () => {
  59. assert.equal(lastElement, expectedLastElement);
  60. });
  61. });
  62. });
  63. });