MCPcopy
hub / github.com/yjs/yjs / compareStructStores

Function compareStructStores

tests/testHelper.js:512–549  ·  view source on GitHub ↗
(ss1, ss2)

Source from the content-addressed store, hash-verified

510 * @param {import('../src/internals.js').StructStore} ss2
511 */
512export const compareStructStores = (ss1, ss2) => {
513 t.assert(ss1.clients.size === ss2.clients.size)
514 for (const [client, structs1] of ss1.clients) {
515 const structs2 = /** @type {Array<Y.AbstractStruct>} */ (ss2.clients.get(client))
516 t.assert(structs2 !== undefined && structs1.length === structs2.length)
517 for (let i = 0; i < structs1.length; i++) {
518 const s1 = structs1[i]
519 const s2 = structs2[i]
520 // checks for abstract struct
521 if (
522 s1.constructor !== s2.constructor ||
523 !Y.compareIDs(s1.id, s2.id) ||
524 s1.deleted !== s2.deleted ||
525 // @ts-ignore
526 s1.length !== s2.length
527 ) {
528 t.fail('Structs dont match')
529 }
530 if (s1 instanceof Y.Item) {
531 if (
532 !(s2 instanceof Y.Item) ||
533 !((s1.left === null && s2.left === null) || (s1.left !== null && s2.left !== null && Y.compareIDs(s1.left.lastId, s2.left.lastId))) ||
534 !compareItemIDs(s1.right, s2.right) ||
535 !Y.compareIDs(s1.origin, s2.origin) ||
536 !Y.compareIDs(s1.rightOrigin, s2.rightOrigin) ||
537 s1.parentSub !== s2.parentSub
538 ) {
539 return t.fail('Items dont match')
540 }
541 // make sure that items are connected correctly
542 t.assert(s1.left === null || s1.left.right === s1)
543 t.assert(s1.right === null || s1.right.left === s1)
544 t.assert(s2.left === null || s2.left.right === s2)
545 t.assert(s2.right === null || s2.right.left === s2)
546 }
547 }
548 }
549}
550
551/**
552 * @template T

Callers 1

compareFunction · 0.85

Calls 2

compareItemIDsFunction · 0.85
getMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…