feat: implement chart utilities for temperature forecasting, calibration, and observation processing
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
import { getTemperatureChartData } from "@/lib/chart-utils";
|
||||
import type { CityDetail } from "@/lib/dashboard-types";
|
||||
|
||||
function assert(condition: unknown, message: string) {
|
||||
if (!condition) throw new Error(message);
|
||||
}
|
||||
|
||||
export function runTests() {
|
||||
const chartData = getTemperatureChartData(
|
||||
{
|
||||
name: "test-city",
|
||||
display_name: "Test City",
|
||||
local_date: "2026-05-16",
|
||||
local_time: "10:00",
|
||||
temp_symbol: "°C",
|
||||
hourly: {
|
||||
times: [
|
||||
"2026-05-16T08:00:00+08:00",
|
||||
"2026-05-16T09:00:00+08:00",
|
||||
"2026-05-16T10:00:00+08:00",
|
||||
"2026-05-16T11:00:00+08:00",
|
||||
],
|
||||
temps: [20, 22, 24, 26],
|
||||
},
|
||||
forecast: { today_high: 28 },
|
||||
deb: { prediction: 28 },
|
||||
} as CityDetail,
|
||||
"zh-CN",
|
||||
);
|
||||
|
||||
assert(chartData, "temperature chart data should exist for ISO datetime hourly input");
|
||||
assert(
|
||||
chartData?.datasets.debSeries.some((point) => point.labelTime === "08:00" && point.y === 20),
|
||||
"temperature chart should normalize ISO hourly times into HH:mm points",
|
||||
);
|
||||
assert(
|
||||
chartData?.datasets.debSeries.some((point) => point.labelTime === "10:00" && point.y === 24),
|
||||
"temperature chart should keep normalized hourly temperatures on the curve",
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user