Skip to content

Commit

Permalink
Making callback on mandatory on merge
Browse files Browse the repository at this point in the history
  • Loading branch information
elielnfinic committed Nov 14, 2024
1 parent 25e5bf5 commit deda5d9
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 42 deletions.
2 changes: 1 addition & 1 deletion packages/object/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ export class TopologyObject implements ITopologyObject {
*/
async merge(
vertices: Vertex[],
synchronizeVertices?: (croId: string, nodeId: string) => void,
synchronizeVertices: (croId: string, nodeId: string) => void,
) {
for (const vertex of vertices) {
// Check to avoid manually crafted `undefined` operations
Expand Down
82 changes: 41 additions & 41 deletions packages/object/tests/hashgraph.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ describe("HashGraph construction tests", () => {
cro1.add(1);
cro2.add(2);

obj2.merge(obj1.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

expect(obj2.hashGraph.selfCheckConstraints()).toBe(true);

Expand Down Expand Up @@ -104,12 +104,12 @@ describe("HashGraph for AddWinSet tests", () => {
const cro2 = obj2.cro as AddWinsSet<number>;

cro1.add(1);
obj2.merge(obj1.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

cro1.remove(1);
cro2.add(1);
obj1.merge(obj2.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices());
obj1.merge(obj2.hashGraph.getAllVertices(), () => {});
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

expect(cro1.contains(1)).toBe(true);
expect(obj1.hashGraph.vertices).toEqual(obj2.hashGraph.vertices);
Expand All @@ -132,12 +132,12 @@ describe("HashGraph for AddWinSet tests", () => {
const cro2 = obj2.cro as AddWinsSet<number>;

cro1.add(1);
obj2.merge(obj1.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

cro1.remove(1);
cro2.add(2);
obj1.merge(obj2.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices());
obj1.merge(obj2.hashGraph.getAllVertices(), () => {});
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

expect(cro1.contains(1)).toBe(false);
expect(cro1.contains(2)).toBe(true);
Expand All @@ -162,14 +162,14 @@ describe("HashGraph for AddWinSet tests", () => {
const cro2 = obj2.cro as AddWinsSet<number>;

cro1.add(1);
obj2.merge(obj1.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

cro1.remove(1);
cro2.add(1);
cro1.add(10);
cro2.remove(5);
obj1.merge(obj2.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices());
obj1.merge(obj2.hashGraph.getAllVertices(), () => {});
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

expect(cro1.contains(1)).toBe(true);
expect(cro1.contains(10)).toBe(true);
Expand All @@ -196,14 +196,14 @@ describe("HashGraph for AddWinSet tests", () => {
const cro2 = obj2.cro as AddWinsSet<number>;

cro1.add(1);
obj2.merge(obj1.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

cro1.remove(1);
cro2.remove(2);
cro1.add(2);
cro2.add(1);
obj1.merge(obj2.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices());
obj1.merge(obj2.hashGraph.getAllVertices(), () => {});
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

expect(cro1.contains(1)).toBe(true);
expect(cro1.contains(2)).toBe(true);
Expand Down Expand Up @@ -233,27 +233,27 @@ describe("HashGraph for AddWinSet tests", () => {
const cro3 = obj3.cro as AddWinsSet<number>;

cro1.add(1);
obj2.merge(obj1.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

cro1.add(1);
cro1.remove(2);
cro2.remove(2);
cro2.add(2);

obj3.merge(obj1.hashGraph.getAllVertices());
obj3.merge(obj1.hashGraph.getAllVertices(), () => {});
cro3.add(3);
cro1.remove(1);

obj1.merge(obj2.hashGraph.getAllVertices());
obj1.merge(obj2.hashGraph.getAllVertices(), () => {});
cro1.remove(3);
cro2.remove(1);

obj1.merge(obj2.hashGraph.getAllVertices());
obj1.merge(obj3.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices());
obj2.merge(obj3.hashGraph.getAllVertices());
obj3.merge(obj1.hashGraph.getAllVertices());
obj3.merge(obj2.hashGraph.getAllVertices());
obj1.merge(obj2.hashGraph.getAllVertices(), () => {});
obj1.merge(obj3.hashGraph.getAllVertices(), () => {});
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});
obj2.merge(obj3.hashGraph.getAllVertices(), () => {});
obj3.merge(obj1.hashGraph.getAllVertices(), () => {});
obj3.merge(obj2.hashGraph.getAllVertices(), () => {});

expect(cro1.contains(1)).toBe(false);
expect(cro1.contains(2)).toBe(true);
Expand Down Expand Up @@ -288,27 +288,27 @@ describe("HashGraph for AddWinSet tests", () => {
const cro3 = obj3.cro as AddWinsSet<number>;

cro1.add(1);
obj2.merge(obj1.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

cro1.add(1);
cro1.remove(2);
cro2.remove(2);

obj3.merge(obj1.hashGraph.getAllVertices());
obj3.merge(obj1.hashGraph.getAllVertices(), () => {});
cro3.add(3);
cro1.remove(1);

obj2.merge(obj1.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});
cro2.add(2);
cro1.remove(3);
cro2.remove(1);

obj1.merge(obj2.hashGraph.getAllVertices());
obj1.merge(obj3.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices());
obj2.merge(obj3.hashGraph.getAllVertices());
obj3.merge(obj1.hashGraph.getAllVertices());
obj3.merge(obj2.hashGraph.getAllVertices());
obj1.merge(obj2.hashGraph.getAllVertices(), () => {});
obj1.merge(obj3.hashGraph.getAllVertices(), () => {});
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});
obj2.merge(obj3.hashGraph.getAllVertices(), () => {});
obj3.merge(obj1.hashGraph.getAllVertices(), () => {});
obj3.merge(obj2.hashGraph.getAllVertices(), () => {});

expect(cro1.contains(1)).toBe(false);
expect(cro1.contains(2)).toBe(true);
Expand Down Expand Up @@ -340,16 +340,16 @@ describe("HashGraph for AddWinSet tests", () => {
const cro2 = obj2.cro as AddWinsSet<number>;

cro1.add(1);
obj2.merge(obj1.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

cro1.add(2);
cro2.remove(2);
cro2.remove(2);
obj1.merge(obj2.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices());
obj1.merge(obj2.hashGraph.getAllVertices(), () => {});
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

cro1.remove(2);
obj2.merge(obj1.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

expect(cro1.contains(1)).toBe(true);
expect(cro1.contains(2)).toBe(false);
Expand Down Expand Up @@ -400,11 +400,11 @@ describe("HashGraph for PseudoRandomWinsSet tests", () => {
cro4.add(4);
cro5.add(5);

obj2.merge(obj1.hashGraph.getAllVertices());
obj3.merge(obj2.hashGraph.getAllVertices());
obj4.merge(obj3.hashGraph.getAllVertices());
obj5.merge(obj4.hashGraph.getAllVertices());
obj1.merge(obj5.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});
obj3.merge(obj2.hashGraph.getAllVertices(), () => {});
obj4.merge(obj3.hashGraph.getAllVertices(), () => {});
obj5.merge(obj4.hashGraph.getAllVertices(), () => {});
obj1.merge(obj5.hashGraph.getAllVertices(), () => {});

const linearOps = obj1.hashGraph.linearizeOperations();
// Pseudo-randomly chosen operation
Expand All @@ -431,7 +431,7 @@ describe("HashGraph for undefined operations tests", () => {
// Set one of the vertice from cro1 to have undefined operation
obj1.hashGraph.getAllVertices()[1].operation = undefined;

obj2.merge(obj1.hashGraph.getAllVertices());
obj2.merge(obj1.hashGraph.getAllVertices(), () => {});

const linearOps = obj2.hashGraph.linearizeOperations();
// Should only have one, since we skipped the undefined operations
Expand Down

0 comments on commit deda5d9

Please sign in to comment.