PlaceholdersBuffer.test.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import PlaceholdersBuffer from './PlaceholdersBuffer';
  2. describe('PlaceholdersBuffer', () => {
  3. it('does nothing if no placeholders are defined', () => {
  4. const text = 'metric';
  5. const buffer = new PlaceholdersBuffer(text);
  6. expect(buffer.hasPlaceholders()).toBe(false);
  7. expect(buffer.toString()).toBe(text);
  8. expect(buffer.getNextMoveOffset()).toBe(0);
  9. });
  10. it('respects the traversal order of placeholders', () => {
  11. const text = 'sum($2 offset $1) by ($3)';
  12. const buffer = new PlaceholdersBuffer(text);
  13. expect(buffer.hasPlaceholders()).toBe(true);
  14. expect(buffer.toString()).toBe('sum( offset ) by ()');
  15. expect(buffer.getNextMoveOffset()).toBe(12);
  16. buffer.setNextPlaceholderValue('1h');
  17. expect(buffer.hasPlaceholders()).toBe(true);
  18. expect(buffer.toString()).toBe('sum( offset 1h) by ()');
  19. expect(buffer.getNextMoveOffset()).toBe(-10);
  20. buffer.setNextPlaceholderValue('metric');
  21. expect(buffer.hasPlaceholders()).toBe(true);
  22. expect(buffer.toString()).toBe('sum(metric offset 1h) by ()');
  23. expect(buffer.getNextMoveOffset()).toBe(16);
  24. buffer.setNextPlaceholderValue('label');
  25. expect(buffer.hasPlaceholders()).toBe(false);
  26. expect(buffer.toString()).toBe('sum(metric offset 1h) by (label)');
  27. expect(buffer.getNextMoveOffset()).toBe(0);
  28. });
  29. it('respects the traversal order of adjacent placeholders', () => {
  30. const text = '$1$3$2$4';
  31. const buffer = new PlaceholdersBuffer(text);
  32. expect(buffer.hasPlaceholders()).toBe(true);
  33. expect(buffer.toString()).toBe('');
  34. expect(buffer.getNextMoveOffset()).toBe(0);
  35. buffer.setNextPlaceholderValue('1');
  36. expect(buffer.hasPlaceholders()).toBe(true);
  37. expect(buffer.toString()).toBe('1');
  38. expect(buffer.getNextMoveOffset()).toBe(0);
  39. buffer.setNextPlaceholderValue('2');
  40. expect(buffer.hasPlaceholders()).toBe(true);
  41. expect(buffer.toString()).toBe('12');
  42. expect(buffer.getNextMoveOffset()).toBe(-1);
  43. buffer.setNextPlaceholderValue('3');
  44. expect(buffer.hasPlaceholders()).toBe(true);
  45. expect(buffer.toString()).toBe('132');
  46. expect(buffer.getNextMoveOffset()).toBe(1);
  47. buffer.setNextPlaceholderValue('4');
  48. expect(buffer.hasPlaceholders()).toBe(false);
  49. expect(buffer.toString()).toBe('1324');
  50. expect(buffer.getNextMoveOffset()).toBe(0);
  51. });
  52. });