import {TrivialParser} from "./trivial_parser"; import { initialVersion, VersionRegistry, } from "../onion/version"; import { NodeCreation, NodeDeletion, EdgeCreation, EdgeUpdate, } from "../onion/primitive_delta"; import {CompositeLevel} from "../onion/composite_delta"; import {mockUuid} from "../onion/test_helpers"; import {assert} from "../util/assert"; describe("Trivial Parser", () => { it("Parse CS creation and deletion", () => { const registry = new VersionRegistry(); const csLvl = new CompositeLevel(); const asLvl = new CompositeLevel(); const corrLvl = new CompositeLevel(); const getUuid = mockUuid(); const parser = new TrivialParser(registry, csLvl, asLvl, corrLvl, getUuid); const csInitial = initialVersion; const corrInitial = initialVersion; const asInitital = initialVersion; const csCreation = new NodeCreation(getUuid()); const csDeletion = new NodeDeletion(csCreation, [], []); const csV1 = registry.createVersion(csInitial, csLvl.createComposite([csCreation])); const csV2 = registry.createVersion(csV1, csLvl.createComposite([csDeletion])); const corrV1 = parser.parse(csV1, corrInitial); const corrV2 = parser.parse(csV2, corrV1); const asV2 = corrV2.getEmbedded("as")?.embedded; if (asV2 === undefined) { throw new Error("Expected asV2 to exist!"); } const asV2Primitives = [...asV2.iterPrimitiveDeltas()]; assert(asV2Primitives.length === 2, "Expected 2 primitive deltas on AS"); }); });