Files
test-repo/tests/unit/traverse-doc.js
T

61 lines
1.1 KiB
JavaScript
Raw Normal View History

2025-11-03 01:52:26 +08:00
import {
findInDoc,
InvalidDocError,
traverseDoc,
} from "../../src/document/index.js";
test("traverse", () => {
const doc = [["a", "b"]];
{
const visited = [];
traverseDoc(doc, (doc) => {
visited.push(doc);
});
expect(visited).toStrictEqual([doc, doc[0], doc[0][0], doc[0][1]]);
}
{
const visited = [];
traverseDoc(doc, (doc) => {
visited.push(doc);
return false;
});
// Should skip children
expect(visited).toStrictEqual([doc]);
}
{
const visited = [];
traverseDoc(doc, (doc) => {
visited.push(doc);
if (doc === "a") {
return false;
}
});
// Still visiting siblings
expect(visited).toStrictEqual([doc, doc[0], doc[0][0], doc[0][1]]);
}
{
const visited = [];
findInDoc(doc, (doc) => {
visited.push(doc);
if (doc === "a") {
return true;
}
});
// Should stop visiting siblings when found
expect(visited).toStrictEqual([doc, doc[0], doc[0][0]]);
}
});
2022-08-27 18:41:33 +08:00
test("Invalid doc", () => {
expect(() => {
traverseDoc({ type: "invalid-type" }, () => {});
}).toThrow(InvalidDocError);
});