A world-class math input for the web
at main 46 lines 976 B view raw
1import { expect, test } from "vitest"; 2import { 3 createActorID, 4 Dot, 5 LWWMapCRDT, 6 LWWRegisterCRDT, 7 SequenceCRDT, 8} from "./crdt"; 9 10test("Add items to a sequence", () => { 11 const actorA = createActorID("A"); 12 let crdtA = new SequenceCRDT< 13 Map<"char", string>, 14 LWWMapCRDT<"char", string> 15 >(); 16 let prevId: Dot | null = null; 17 [crdtA, prevId] = crdtA.insert( 18 actorA, 19 prevId, 20 new LWWMapCRDT( 21 new Map([["char", new LWWRegisterCRDT("a", new Dot(actorA, 1))]]), 22 ), 23 ); 24 [crdtA, prevId] = crdtA.insert( 25 actorA, 26 prevId, 27 new LWWMapCRDT( 28 new Map([["char", new LWWRegisterCRDT("b", new Dot(actorA, 1))]]), 29 ), 30 ); 31 [crdtA, prevId] = crdtA.insert( 32 actorA, 33 prevId, 34 new LWWMapCRDT( 35 new Map([["char", new LWWRegisterCRDT("c", new Dot(actorA, 1))]]), 36 ), 37 ); 38 39 const sequence = crdtA.getValue(); 40 41 expect(sequence.map((item) => item.value.get("char"))).toEqual([ 42 "a", 43 "b", 44 "c", 45 ]); 46});