tabby/clients/tabby-agent/src/postprocess/removeOverlapping.test.ts

66 lines
1.7 KiB
TypeScript

import { expect } from "chai";
import { documentContext, inline } from "./testUtils";
import { removeOverlapping } from "./removeOverlapping";
describe("postprocess", () => {
describe("removeOverlapping", () => {
it("should remove content overlapped between completion and suffix", () => {
const context = {
...documentContext`
function sum(a, b) {
return value;
}
`,
language: "javascript",
};
const completion = inline`
├let value = a + b;
return value;
}┤
`;
const expected = inline`
├let value = a + b;┤
┴┴
`;
expect(removeOverlapping(context)(completion)).to.eq(expected);
});
// Bad case
it("can not remove text that suffix not exactly starts with", () => {
const context = {
...documentContext`
let sum = (a, b) => {
║return a + b;
}
`,
language: "javascript",
};
// completion give a `;` at end but context have not
const completion = inline`
├return a + b;
};┤
`;
expect(removeOverlapping(context)(completion)).to.eq(completion);
});
// Bad case
it("can not remove text that suffix not exactly starts with", () => {
const context = {
...documentContext`
let sum = (a, b) => {
return a + b;
}
`,
language: "javascript",
};
// the difference is a `\n`
const completion = inline`
├}┤
`;
expect(removeOverlapping(context)(completion)).to.eq(completion);
});
});
});