feat(scada): add manual monitoring timeline
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { formatMonitoringInterval, moveTimelineTime, snapTimelineTime } from "./scada-replay-time";
|
||||
|
||||
const minute = 60_000;
|
||||
const start = Date.parse("2026-10-08T08:07:00+08:00");
|
||||
|
||||
describe("SCADA timeline timestamps", () => {
|
||||
it("quantizes continuous pointer positions to five-minute SCADA timestamps", () => {
|
||||
const end = start + 60 * minute;
|
||||
expect(snapTimelineTime(Date.parse("2026-10-08T08:26:00+08:00"), start, end, 5 * minute))
|
||||
.toBe(Date.parse("2026-10-08T08:25:00+08:00"));
|
||||
expect(snapTimelineTime(Date.parse("2026-10-08T08:28:00+08:00"), start, end, 5 * minute))
|
||||
.toBe(Date.parse("2026-10-08T08:30:00+08:00"));
|
||||
});
|
||||
|
||||
it("moves keyboard controls between clock-aligned five-minute timestamps", () => {
|
||||
const end = start + 60 * minute;
|
||||
expect(moveTimelineTime(start, start, end, 5 * minute, 1)).toBe(Date.parse("2026-10-08T08:10:00+08:00"));
|
||||
expect(moveTimelineTime(start + 6 * minute, start, end, 5 * minute, -1)).toBe(Date.parse("2026-10-08T08:10:00+08:00"));
|
||||
});
|
||||
|
||||
it("reaches exact range endpoints and never leaves the selected range", () => {
|
||||
const end = start + 22 * minute;
|
||||
expect(moveTimelineTime(end - minute, start, end, 5 * minute, 1)).toBe(end);
|
||||
expect(moveTimelineTime(start + minute, start, end, 5 * minute, -1)).toBe(start);
|
||||
});
|
||||
|
||||
it("formats the independent project monitoring period", () => {
|
||||
expect(formatMonitoringInterval(900)).toBe("15 分钟");
|
||||
expect(formatMonitoringInterval(91)).toBe("91 秒");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user