Skip to content

Commit

Permalink
feat: fix more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
darkskygit committed Jul 9, 2024
1 parent 4332610 commit ba46789
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 40 deletions.
51 changes: 25 additions & 26 deletions y-octo-node/tests/yjs/testHelper.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as t from "lib0/testing";
import assert, { deepEqual } from "node:assert";
import * as prng from "lib0/prng";
import * as encoding from "lib0/encoding";
import * as decoding from "lib0/decoding";
Expand Down Expand Up @@ -75,14 +75,14 @@ export class TestYOctoInstance extends Y.Doc {
testConnector.allConns.add(this);
this.updates = [];
// set up observe on local model
this.onUpdate((update) => {
if (origin !== testConnector) {
const encoder = encoding.createEncoder();
syncProtocol.writeUpdate(encoder, update);
broadcastMessage(this, encoding.toUint8Array(encoder));
}
this.updates.push(update);
});
// this.onUpdate((update) => {
// // if (origin !== testConnector) {
// // const encoder = encoding.createEncoder();
// // syncProtocol.writeUpdate(encoder, update);
// // broadcastMessage(this, encoding.toUint8Array(encoder));
// // }
// this.updates.push(update);
// });
this.connect();
}

Expand Down Expand Up @@ -154,6 +154,7 @@ export class TestConnector {
* If this function was unable to flush a message, because there are no more messages to flush, it returns false. true otherwise.
*/
flushRandomMessage(): boolean {
return false;
const gen = this.prng;
const conns = Array.from(this.onlineConns).filter(
(conn) => conn.receiving.size > 0,
Expand Down Expand Up @@ -201,13 +202,11 @@ export class TestConnector {
}

reconnectAll() {
this.allConns.forEach((conn: { connect: () => any }) => conn.connect());
this.allConns.forEach((conn) => conn.connect());
}

disconnectAll() {
this.allConns.forEach((conn: { disconnect: () => any }) =>
conn.disconnect(),
);
this.allConns.forEach((conn) => conn.disconnect());
}

syncAll() {
Expand Down Expand Up @@ -330,32 +329,32 @@ export const compare = (users: TestYOctoInstance[]) => {
// t.assert(u.store.pendingStructs === null);
// }
// Test Array iterator
t.compare(
deepEqual(
users[0].getOrCreateArray("array").toArray(),
Array.from(users[0].getOrCreateArray("array").iter()),
);
// Test Map iterator
const ymapkeys: any[] = Array.from(users[0].getOrCreateMap("map").keys());
t.assert(ymapkeys.length === Object.keys(userMapValues[0]).length);
assert(ymapkeys.length === Object.keys(userMapValues[0]).length);
ymapkeys.forEach((key) =>
t.assert(object.hasProperty(userMapValues[0], key)),
assert(object.hasProperty(userMapValues[0], key)),
);

const mapRes: Record<string, any> = {};
for (const [k, v] of users[0].getOrCreateMap("map").entries()) {
mapRes[k] = Y.isAbstractType(v) ? v.toJSON() : v;
}
t.compare(userMapValues[0], mapRes);
deepEqual(userMapValues[0], mapRes);
// Compare all users
for (let i = 0; i < users.length - 1; i++) {
t.compare(
deepEqual(
userArrayValues[i].length,
users[i].getOrCreateArray("array").length,
);
t.compare(userArrayValues[i], userArrayValues[i + 1]);
t.compare(userMapValues[i], userMapValues[i + 1]);
// t.compare(userXmlValues[i], userXmlValues[i + 1]);
// t.compare(
deepEqual(userArrayValues[i], userArrayValues[i + 1]);
deepEqual(userMapValues[i], userMapValues[i + 1]);
// deepEqual(userXmlValues[i], userXmlValues[i + 1]);
// deepEqual(
// userTextValues[i]
// .map(
// /** @param {any} a */ (a: { insert: any }) =>
Expand All @@ -364,26 +363,26 @@ export const compare = (users: TestYOctoInstance[]) => {
// .join("").length,
// users[i].getOrCreateText("text").length,
// );
// t.compare(
// deepEqual(
// userTextValues[i],
// userTextValues[i + 1],
// "",
// (_constructor, a, b) => {
// if (Y.isAbstractType(a)) {
// t.compare(a.toJSON(), b.toJSON());
// deepEqual(a.toJSON(), b.toJSON());
// } else if (a !== b) {
// t.fail("Deltas dont match");
// }
// return true;
// },
// );
t.compare(Y.encodeStateVector(users[i]), Y.encodeStateVector(users[i + 1]));
deepEqual(Y.encodeStateVector(users[i]), Y.encodeStateVector(users[i + 1]));
Y.equalDeleteSets(
Y.createDeleteSetFromStructStore(users[i].store),
Y.createDeleteSetFromStructStore(users[i + 1].store),
);
Y.compareStructStores(users[i].store, users[i + 1].store);
t.compare(
deepEqual(
Y.encodeSnapshot(Y.snapshot(users[i])),
Y.encodeSnapshot(Y.snapshot(users[i + 1])),
);
Expand Down
28 changes: 14 additions & 14 deletions y-octo-node/tests/yjs/y-map.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,16 @@ test.beforeEach(() => {
gen = prng.create(randomInt(0, 0xffffffff));
});

test.skip("testIterators", (t) => {
test("testIterators", (t) => {
const ydoc = new Y.Doc();
const ymap = ydoc.createMap();
// we are only checking if the type assumptions are correct
const vals = Array.from(ymap.values());
const entries = Array.from(ymap.entries());
const keys = Array.from(ymap.keys());
console.log(vals, entries, keys);
t.is(vals.length, 0);
t.is(entries.length, 0);
t.is(keys.length, 0);
});

/**
Expand All @@ -30,22 +32,20 @@ test.skip("testIterators", (t) => {
test.skip("testMapEventError", (t) => {
const doc = new Y.Doc();
const ymap = doc.createMap();
/**
* @type {any}
*/

let event: any = null;
ymap.observe((e) => {
event = e;
});
t.fails(() => {
t.throws(() => {
t.info(event.keys);
});
t.fails(() => {
t.throws(() => {
t.info(event.keys);
});
});

test.skip("testMapHavingIterableAsConstructorParamTests", (t) => {
test("testMapHavingIterableAsConstructorParamTests", (t) => {
const { users, map0 } = init(gen, { users: 1 });

const m1 = users[0].createMap(Object.entries({ number: 1, string: "hello" }));
Expand All @@ -58,14 +58,14 @@ test.skip("testMapHavingIterableAsConstructorParamTests", (t) => {
["boolean", true],
]);
map0.set("m2", m2);
t.assert(m2.get("object").x === 1);
t.assert(m2.get<any>("object").x === 1);
t.assert(m2.get("boolean") === true);

const m3 = users[0].createMap([...m1, ...m2]);
const m3 = users[0].createMap([...m1.entries(), ...m2.entries()]);
map0.set("m3", m3);
t.assert(m3.get("number") === 1);
t.assert(m3.get("string") === "hello");
t.assert(m3.get("object").x === 1);
t.assert(m3.get<any>("object").x === 1);
t.assert(m3.get("boolean") === true);
});

Expand Down Expand Up @@ -195,8 +195,8 @@ test.skip("testGetAndSetOfMapProperty", (t) => {
test.skip("testYmapSetsYmap", (t) => {
const { users, map0 } = init(gen, { users: 2 });

const map = map0.set("Map", new Y.Map());
t.assert(map0.get("Map") === map);
const map = map0.set("Map", users[0].createMap());
t.assert(Y.compareIds(map0.get<Y.Map>("Map").itemId, map.itemId));
map.set("one", 1);
t.deepEqual(map.get("one"), 1);
compare(users);
Expand Down Expand Up @@ -239,7 +239,7 @@ test.skip("testGetAndSetOfMapPropertyWithConflict", (t) => {
compare(users);
});

test.skip("testSizeAndDeleteOfMapProperty", (t) => {
test("testSizeAndDeleteOfMapProperty", (t) => {
const { map0 } = init(gen, { users: 1 });

map0.set("stuff", "c0");
Expand Down

0 comments on commit ba46789

Please sign in to comment.