trivial_parser.test.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import {TrivialParser} from "./trivial_parser";
  2. import {
  3. initialVersion,
  4. VersionRegistry,
  5. } from "../onion/version";
  6. import {
  7. NodeCreation,
  8. NodeDeletion,
  9. EdgeCreation,
  10. EdgeUpdate,
  11. } from "../onion/primitive_delta";
  12. import {CompositeLevel} from "../onion/composite_delta";
  13. import {mockUuid} from "../onion/test_helpers";
  14. import {assert} from "../util/assert";
  15. describe("Trivial Parser", () => {
  16. it("Parse CS creation and deletion", () => {
  17. const registry = new VersionRegistry();
  18. const csLvl = new CompositeLevel();
  19. const asLvl = new CompositeLevel();
  20. const corrLvl = new CompositeLevel();
  21. const getUuid = mockUuid();
  22. const parser = new TrivialParser(registry, csLvl, asLvl, corrLvl, getUuid);
  23. const csInitial = initialVersion;
  24. const corrInitial = initialVersion;
  25. const asInitital = initialVersion;
  26. const csCreation = new NodeCreation(getUuid());
  27. const csDeletion = new NodeDeletion(csCreation, [], []);
  28. const csV1 = registry.createVersion(csInitial, csLvl.createComposite([csCreation]));
  29. const csV2 = registry.createVersion(csV1, csLvl.createComposite([csDeletion]));
  30. const corrV1 = parser.parse(csV1, corrInitial);
  31. const corrV2 = parser.parse(csV2, corrV1);
  32. const asV2 = corrV2.getEmbedded("as")?.embedded;
  33. if (asV2 === undefined) {
  34. throw new Error("Expected asV2 to exist!");
  35. }
  36. const asV2Primitives = [...asV2.iterPrimitiveDeltas()];
  37. assert(asV2Primitives.length === 2, "Expected 2 primitive deltas on AS");
  38. });
  39. });