import {TrivialParser} from "./trivial_parser"; import { VersionRegistry, } from "../onion/version"; import { NodeCreation, NodeDeletion, EdgeCreation, EdgeUpdate, PrimitiveRegistry, } 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 primitiveRegistry = new PrimitiveRegistry(); // const csRegistry = new VersionRegistry(); // const corrRegistry = new VersionRegistry(); // const asRegistry = new VersionRegistry(); // const csLvl = new CompositeLevel(); // L1 // const asLvl = new CompositeLevel(); // L1 // const corrLvl = new CompositeLevel(); // L1 // const getUuid = mockUuid(); // const parser = new TrivialParser(primitiveRegistry, getUuid, /*{csLvl, asLvl, corrLvl}*/); // const csCreation = primitiveRegistry.newNodeCreation(getUuid()); // const csDeletion = primitiveRegistry.newNodeDeletion(csCreation, [], []); // const csV1Composite = csLvl.createComposite([csCreation]); // const csV2Composite = csLvl.createComposite([csDeletion]); // const csV0 = csRegistry.initialVersion; // const corrV0 = corrRegistry.initialVersion; // const asV0 = asRegistry.initialVersion; // const {corrComposite: corrV1Composite, targetComposite: asV1Composite} = parser.parse(csV1Composite, csV0, corrV0, asV0); // const csV1 = csRegistry.createVersion(csV0, csV1Composite); // const corrV1 = corrRegistry.createVersion(corrV0, corrV1Composite); // const asV1 = asRegistry.createVersion(asV0, asV1Composite); // const {corrComposite: corrV2Composite, targetComposite: asV2Composite} = parser.parse(csV2Composite, csV1, corrV1, asV1); // const csV2 = csRegistry.createVersion(csV1, csV2Composite); // const corrV2 = corrRegistry.createVersion(corrV1, corrV2Composite); // const asV2 = asRegistry.createVersion(asV1, asV2Composite); // const asV2Primitives = [...asV2.iterPrimitiveDeltas()]; // assert(asV2Primitives.length === 2, "Expected 2 primitive deltas on AS"); // }); // it("Parse CS creation and deletion (with CS edge)", () => { // const primitiveRegistry = new PrimitiveRegistry(); // const csRegistry = new VersionRegistry(); // const corrRegistry = new VersionRegistry(); // const asRegistry = new VersionRegistry(); // const csLvl = new CompositeLevel(); // L1 // const asLvl = new CompositeLevel(); // L1 // const corrLvl = new CompositeLevel(); // L1 // const getUuid = mockUuid(); // const parser = new TrivialParser(primitiveRegistry, getUuid, {csLvl, asLvl, corrLvl}); // // Same as before, but this time, we also create an edge in CS: // const csV0 = csRegistry.initialVersion; // const corrV0 = corrRegistry.initialVersion; // const asV0 = asRegistry.initialVersion; // const csCreation = primitiveRegistry.newNodeCreation(getUuid()); // const csCreateEdge = primitiveRegistry.newEdgeCreation(csCreation, "x", csCreation); // self-edge // const csUnsetEdge = primitiveRegistry.newEdgeUpdate(csCreateEdge, null); // const csDeletion = primitiveRegistry.newNodeDeletion(csCreation, [csUnsetEdge], [csUnsetEdge]); // assert(csDeletion.getConflicts().length === 0, "expected CS deletion to not have conflicts (yet)."); // const csTransactions = [ // csLvl.createComposite([csCreation]), // csLvl.createComposite([csCreateEdge]), // csLvl.createComposite([csUnsetEdge]), // csLvl.createComposite([csDeletion]), // ]; // // Parse all CS composites: // const [csFinal, corrFinal, asFial] = csTransactions.reduce(([csParent, corrParent, asParent], csComposite) => { // const {corrComposite, targetComposite: asComposite} = parser.parse(csComposite, csParent, corrParent, asParent); // return [ // csRegistry.createVersion(csParent, csComposite), // corrRegistry.createVersion(corrParent, corrComposite), // asRegistry.createVersion(asParent, asComposite), // ]; // }, [csV0, corrV0, asV0]); // console.log("corrFinal primitives:", [...corrFinal.iterPrimitiveDeltas()]) // }); // });