HexadecimalIdentifierNamesGenerator.spec.ts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import 'reflect-metadata';
  2. import { assert } from 'chai';
  3. import { ServiceIdentifiers } from '../../../../src/container/ServiceIdentifiers';
  4. import { IIdentifierNamesGenerator } from '../../../../src/interfaces/generators/identifier-names-generators/IIdentifierNamesGenerator';
  5. import { IInversifyContainerFacade } from '../../../../src/interfaces/container/IInversifyContainerFacade';
  6. import { IdentifierNamesGenerator } from '../../../../src/enums/generators/identifier-names-generators/IdentifierNamesGenerator';
  7. import { InversifyContainerFacade } from '../../../../src/container/InversifyContainerFacade';
  8. describe('HexadecimalIdentifierNamesGenerator', () => {
  9. describe('generate (length: number): string', () => {
  10. describe('Hexadecimal name without prefix', () => {
  11. let identifierNamesGenerator: IIdentifierNamesGenerator,
  12. hexadecimalIdentifierName: string,
  13. regExp: RegExp;
  14. before(() => {
  15. const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade();
  16. inversifyContainerFacade.load('', {});
  17. identifierNamesGenerator = inversifyContainerFacade.getNamed<IIdentifierNamesGenerator>(
  18. ServiceIdentifiers.IIdentifierNamesGenerator,
  19. IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator
  20. )
  21. });
  22. describe('variant #1: hexadecimal name with length `4`', () => {
  23. before(() => {
  24. hexadecimalIdentifierName = identifierNamesGenerator.generate(4);
  25. regExp = /^_0x(\w){4}$/;
  26. });
  27. it('should return hexadecimal name', () => {
  28. assert.match(hexadecimalIdentifierName, regExp);
  29. })
  30. });
  31. describe('variant #2: hexadecimal name with length `6`', () => {
  32. before(() => {
  33. hexadecimalIdentifierName = identifierNamesGenerator.generate(6);
  34. regExp = /^_0x(\w){4,6}$/;
  35. });
  36. it('should return hexadecimal name', () => {
  37. assert.match(hexadecimalIdentifierName, regExp);
  38. })
  39. });
  40. });
  41. describe('Hexadecimal name with prefix', () => {
  42. const regExp: RegExp = /^foo_0x(\w){4,6}$/;
  43. let identifierNamesGenerator: IIdentifierNamesGenerator,
  44. hexadecimalIdentifierName: string;
  45. before(() => {
  46. const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade();
  47. inversifyContainerFacade.load('', {
  48. identifiersPrefix: 'foo'
  49. });
  50. identifierNamesGenerator = inversifyContainerFacade.getNamed<IIdentifierNamesGenerator>(
  51. ServiceIdentifiers.IIdentifierNamesGenerator,
  52. IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator
  53. );
  54. hexadecimalIdentifierName = identifierNamesGenerator.generate(6);
  55. });
  56. it('should return hexadecimal name with prefix', () => {
  57. assert.match(hexadecimalIdentifierName, regExp);
  58. })
  59. });
  60. describe('Hexadecimal name with random prefix', () => {
  61. const regExp: RegExp = /^(\w){3}_0x(\w){4,6}$/;
  62. let identifierNamesGenerator: IIdentifierNamesGenerator,
  63. hexadecimalIdentifierName: string;
  64. before(() => {
  65. const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade();
  66. inversifyContainerFacade.load('', {
  67. identifiersPrefix: true
  68. });
  69. identifierNamesGenerator = inversifyContainerFacade.getNamed<IIdentifierNamesGenerator>(
  70. ServiceIdentifiers.IIdentifierNamesGenerator,
  71. IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator
  72. );
  73. hexadecimalIdentifierName = identifierNamesGenerator.generate(6);
  74. });
  75. it('should return hexadecimal name with prefix', () => {
  76. assert.match(hexadecimalIdentifierName, regExp);
  77. })
  78. });
  79. });
  80. });