EscapeSequenceEncoder.spec.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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 { IEscapeSequenceEncoder } from '../../../src/interfaces/utils/IEscapeSequenceEncoder';
  7. describe('EscapeSequenceEncoder', () => {
  8. describe('encode', () => {
  9. let escapeSequenceEncoder: IEscapeSequenceEncoder;
  10. before(() => {
  11. const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade();
  12. inversifyContainerFacade.load('', '', {});
  13. escapeSequenceEncoder = inversifyContainerFacade
  14. .get<IEscapeSequenceEncoder>(ServiceIdentifiers.IEscapeSequenceEncoder);
  15. });
  16. describe('Variant #1: default', () => {
  17. const string: string = 'string';
  18. const expectedString: string = '\\x73\\x74\\x72\\x69\\x6e\\x67';
  19. let actualString: string;
  20. before(() => {
  21. actualString = escapeSequenceEncoder.encode(string, true);
  22. });
  23. it('should return a string where all characters are encoded', () => {
  24. assert.equal(actualString, expectedString);
  25. });
  26. });
  27. describe('Variant #2: escape `escape sequences`', () => {
  28. const string: string = 'abc\'\\r\\n';
  29. const expectedString: string = 'abc\\x27\\x5cr\\x5cn';
  30. let actualString: string;
  31. before(() => {
  32. actualString = escapeSequenceEncoder.encode(string, false);
  33. });
  34. it('should return a string where all `escape sequences` are encoded', () => {
  35. assert.equal(actualString, expectedString);
  36. });
  37. });
  38. describe('Variant #3: non-ascii character`', () => {
  39. const string: string = 'тест';
  40. const expectedString: string = '\\u0442\\u0435\\u0441\\u0442';
  41. let actualString: string;
  42. before(() => {
  43. actualString = escapeSequenceEncoder.encode(string, true);
  44. });
  45. it('should return a string where all non-ascii characters are encoded', () => {
  46. assert.equal(actualString, expectedString);
  47. });
  48. });
  49. describe('Variant #4: unicode control character`', () => {
  50. const string: string = '\x00\x1F\x7F\x9F';
  51. const expectedString: string = '\\x00\\x1f\\x7f\\u009f';
  52. let actualString: string;
  53. before(() => {
  54. actualString = escapeSequenceEncoder.encode(string, false);
  55. });
  56. it('should return a string where all unicode control characters are encoded', () => {
  57. assert.equal(actualString, expectedString);
  58. });
  59. });
  60. });
  61. });