import { describe, expect, it } from "vite-plus/test"; import { applyDiffRangesToTokens, computeWordAltDiffRanges } from "./reviewWordDiffs"; describe("computeWordAltDiffRanges", () => { it("joins adjacent word replacements across a single shared separator", () => { const ranges = computeWordAltDiffRanges({ deletionLine: "old old", additionLine: "new new", }); expect(ranges.deletion).toEqual([{ start: 0, end: "old old".length }]); expect(ranges.addition).toEqual([{ start: 0, end: "new new".length }]); }); it("skips inline word diffs for long lines", () => { const longDeletion = `const before = "${"a".repeat(1_001)}";`; const longAddition = `const after = "${"b".repeat(1_001)}";`; const ranges = computeWordAltDiffRanges({ deletionLine: longDeletion, additionLine: longAddition, }); expect(ranges.deletion).toEqual([]); expect(ranges.addition).toEqual([]); });}); describe("applyDiffRangesToTokens", () => { it("splits highlighted fragments out of syntax tokens", () => { const tokens = [ { content: "const before = 1;", color: "#fff", fontStyle: null, }, ]; const nextTokens = applyDiffRangesToTokens(tokens, [{ start: 6, end: 12 }]); expect(nextTokens).toEqual([ { content: "const ", color: "#fff", fontStyle: null, diffHighlight: false, }, { content: "before", color: "#fff", fontStyle: null, diffHighlight: true, }, { content: " = 1;", color: "#fff", fontStyle: null, diffHighlight: false, }, ]); }); it("skips exhausted ranges when later tokens start after the last range", () => { const tokens = [ { content: "a", color: "#fff", fontStyle: null, }, { content: "b", color: "#fff", fontStyle: null, }, ]; const nextTokens = applyDiffRangesToTokens(tokens, [{ start: 0, end: 1 }]); expect(nextTokens).toEqual([ { content: "a", color: "#fff", fontStyle: null, diffHighlight: true, }, { content: "b", color: "#fff", fontStyle: null, }, ]); });});
import { describe, expect, it } from "vite-plus/test";
import { applyDiffRangesToTokens, computeWordAltDiffRanges } from "./reviewWordDiffs";
describe("computeWordAltDiffRanges", () => {
it("joins adjacent word replacements across a single shared separator", () => {
const ranges = computeWordAltDiffRanges({
deletionLine: "old old",
additionLine: "new new",
});
expect(ranges.deletion).toEqual([{ start: 0, end: "old old".length }]);
expect(ranges.addition).toEqual([{ start: 0, end: "new new".length }]);
});
it("skips inline word diffs for long lines", () => {
const longDeletion = `const before = "${"a".repeat(1_001)}";`;
const longAddition = `const after = "${"b".repeat(1_001)}";`;
const ranges = computeWordAltDiffRanges({
deletionLine: longDeletion,
additionLine: longAddition,
});
expect(ranges.deletion).toEqual([]);
expect(ranges.addition).toEqual([]);
});
});
describe("applyDiffRangesToTokens", () => {
it("splits highlighted fragments out of syntax tokens", () => {
const tokens = [
{
content: "const before = 1;",
color: "#fff",
fontStyle: null,
},
];
const nextTokens = applyDiffRangesToTokens(tokens, [{ start: 6, end: 12 }]);
expect(nextTokens).toEqual([
{
content: "const ",
color: "#fff",
fontStyle: null,
diffHighlight: false,
},
{
content: "before",
color: "#fff",
fontStyle: null,
diffHighlight: true,
},
{
content: " = 1;",
color: "#fff",
fontStyle: null,
diffHighlight: false,
},
]);
});
it("skips exhausted ranges when later tokens start after the last range", () => {
const tokens = [
{
content: "a",
color: "#fff",
fontStyle: null,
},
{
content: "b",
color: "#fff",
fontStyle: null,
},
];
const nextTokens = applyDiffRangesToTokens(tokens, [{ start: 0, end: 1 }]);
expect(nextTokens).toEqual([
{
content: "a",
color: "#fff",
fontStyle: null,
diffHighlight: true,
},
{
content: "b",
color: "#fff",
fontStyle: null,
},
]);
});
});