28 lines
908 B
JavaScript
28 lines
908 B
JavaScript
import { describe, it } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { chunkText } from "./chunk.js";
|
|
|
|
describe("chunkText", () => {
|
|
it("returns empty array for blank input", () => {
|
|
assert.deepEqual(chunkText(""), []);
|
|
assert.deepEqual(chunkText(" "), []);
|
|
});
|
|
|
|
it("keeps short text as a single chunk", () => {
|
|
const text = "A short paragraph.";
|
|
assert.deepEqual(chunkText(text), [text]);
|
|
});
|
|
|
|
it("splits long text into overlapping chunks under 2000 chars", () => {
|
|
const word = "word ";
|
|
const text = word.repeat(900);
|
|
const chunks = chunkText(text);
|
|
assert.ok(chunks.length > 1);
|
|
for (const chunk of chunks) {
|
|
assert.ok(chunk.length <= 2000);
|
|
}
|
|
const overlap = chunks[0].slice(-50);
|
|
assert.ok(chunks[1].includes(overlap.trim().slice(0, 20)));
|
|
});
|
|
});
|