first commit

This commit is contained in:
douboer
2026-03-21 18:57:10 +08:00
commit c49aa1a5e9
570 changed files with 107167 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
import { describe, expect, it } from "vitest";
const { appendDiagnosticSample, buildCombinedDiagnosticSparkline } = require("./connectionDiagnosticsSparkline.js");
function decodeSvgDataUri(uri: string) {
const base64 = uri.replace(/^data:image\/svg\+xml;base64,/, "");
return Buffer.from(base64, "base64").toString("utf8");
}
describe("connectionDiagnosticsSparkline", () => {
it("限制最近 30 个采样点", () => {
let samples: number[] = [];
for (let index = 1; index <= 35; index += 1) {
samples = appendDiagnosticSample(samples, index, 30);
}
expect(samples).toHaveLength(30);
expect(samples[0]).toBe(6);
expect(samples[29]).toBe(35);
});
it("为双序列生成带平滑曲线与左右双轴的 SVG data URI", () => {
const uri = buildCombinedDiagnosticSparkline(
{
responseSamples: [12, 22, 18, 30],
networkSamples: [88, 76, 90, 94]
},
{
responseLineColor: "#67D1FF",
responseFillColor: "#67D1FF",
networkLineColor: "#FFB35C",
networkFillColor: "#FFB35C"
}
);
const svg = decodeSvgDataUri(uri);
expect(uri.startsWith("data:image/svg+xml;base64,")).toBe(true);
expect(svg).not.toContain("网关响应");
expect(svg).not.toContain("网络时延");
expect(svg).toContain('text-anchor="end"');
expect(svg).toContain(" C ");
expect(svg).not.toContain("<polyline");
expect(svg).toContain('stroke-width="1.25"');
expect(svg).toContain('stroke="#67D1FF"');
expect(svg).toContain('stroke="#FFB35C"');
expect(svg).not.toContain("clipPath");
});
it("空数据时仍返回不带标题文字的占位图", () => {
const uri = buildCombinedDiagnosticSparkline({
responseSamples: [],
networkSamples: []
});
const svg = decodeSvgDataUri(uri);
expect(uri.startsWith("data:image/svg+xml;base64,")).toBe(true);
expect(svg).not.toContain("网关响应");
expect(svg).not.toContain("网络时延");
expect(svg).toContain("stroke-dasharray");
});
});