Files
openclaw-zero-token/shared/text/join-segments.test.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
2026-03-30 17:58:12 +08:00

52 lines
1.8 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { concatOptionalTextSegments, joinPresentTextSegments } from "./join-segments.js";
function expectTextSegmentsCase<T>(actual: T, expected: T) {
expect(actual).toBe(expected);
}
function expectJoinedTextSegmentsCase<T>(params: { run: () => T; expected: T }) {
expectTextSegmentsCase(params.run(), params.expected);
}
describe("concatOptionalTextSegments", () => {
it.each([
{ params: { left: "A", right: "B" }, expected: "A\n\nB" },
{ params: { left: "A", right: "" }, expected: "" },
{ params: { left: "A" }, expected: "A" },
{ params: { right: "B" }, expected: "B" },
{ params: { left: "", right: "B" }, expected: "B" },
{ params: { left: "" }, expected: "" },
{ params: { left: "A", right: "B", separator: " | " }, expected: "A | B" },
] as const)("concatenates optional segments %#", ({ params, expected }) => {
expectJoinedTextSegmentsCase({
run: () => concatOptionalTextSegments(params),
expected,
});
});
});
describe("joinPresentTextSegments", () => {
it.each([
{ segments: ["A", undefined, "B"], options: undefined, expected: "A\n\nB" },
{ segments: ["", undefined, null], options: undefined, expected: undefined },
{ segments: [" A ", " B "], options: { trim: true }, expected: "A\n\nB" },
{
segments: ["A", " ", "B"],
options: { separator: " | " },
expected: "A | | B",
},
{
segments: ["A", " ", "B"],
options: { trim: true, separator: " | " },
expected: "A | B",
},
{ segments: ["A", " B "], options: { separator: "|" }, expected: "A| B " },
] as const)("joins present segments %#", ({ segments, options, expected }) => {
expectJoinedTextSegmentsCase({
run: () => joinPresentTextSegments(segments, options),
expected,
});
});
});