45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
import assert from "node:assert";
|
|
import { describe, test } from "node:test";
|
|
import SetTree from "../../src/drivers/SetTree.js";
|
|
import { ObjectTree } from "../../src/internal.js";
|
|
|
|
describe("SetTree", () => {
|
|
test("can get the keys of the tree", async () => {
|
|
const set = new Set(["a", "b", "c"]);
|
|
const fixture = new SetTree(set);
|
|
assert.deepEqual(Array.from(await fixture.keys()), [0, 1, 2]);
|
|
});
|
|
|
|
test("can get the value for a key", async () => {
|
|
const set = new Set(["a", "b", "c"]);
|
|
const fixture = new SetTree(set);
|
|
const a = await fixture.get(0);
|
|
assert.equal(a, "a");
|
|
});
|
|
|
|
test("getting an unsupported key returns undefined", async () => {
|
|
const set = new Set(["a", "b", "c"]);
|
|
const fixture = new SetTree(set);
|
|
assert.equal(await fixture.get(3), undefined);
|
|
});
|
|
|
|
test("getting a null/undefined key throws an exception", async () => {
|
|
const set = new Set(["a", "b", "c"]);
|
|
const fixture = new SetTree(set);
|
|
await assert.rejects(async () => {
|
|
await fixture.get(null);
|
|
});
|
|
await assert.rejects(async () => {
|
|
await fixture.get(undefined);
|
|
});
|
|
});
|
|
|
|
test("sets parent on subtrees", async () => {
|
|
const set = new Set();
|
|
set.add(new ObjectTree({}));
|
|
const fixture = new SetTree(set);
|
|
const subtree = await fixture.get(0);
|
|
assert.equal(subtree.parent, fixture);
|
|
});
|
|
});
|