conductor(checkpoint): Checkpoint end of Phase 1: Foundation

This commit is contained in:
2026-02-19 06:57:15 -08:00
parent b94ebd30a2
commit b8bf269de8
2 changed files with 202 additions and 0 deletions

43
timezones_test.ts Normal file
View File

@@ -0,0 +1,43 @@
import { assertEquals } from "jsr:@std/assert";
import { resolveIanaName, getUtcOffsetMs } from "./timezones.ts";
Deno.test("resolveIanaName - Windows names", () => {
assertEquals(resolveIanaName("Eastern Standard Time"), "America/New_York");
assertEquals(resolveIanaName("Romance Standard Time"), "Europe/Paris");
assertEquals(resolveIanaName("Pacific Standard Time"), "America/Los_Angeles");
});
Deno.test("resolveIanaName - IANA names (identity)", () => {
assertEquals(resolveIanaName("America/Chicago"), "America/Chicago");
assertEquals(resolveIanaName("Europe/London"), "Europe/London");
});
Deno.test("resolveIanaName - UTC and special cases", () => {
assertEquals(resolveIanaName("UTC"), "UTC");
assertEquals(resolveIanaName("None"), "UTC");
assertEquals(resolveIanaName(""), "UTC");
});
Deno.test("resolveIanaName - Unknown names", () => {
assertEquals(resolveIanaName("Mars Standard Time"), null);
});
Deno.test("getUtcOffsetMs - New York (DST check)", () => {
const jan = new Date("2025-01-15T12:00:00Z");
const july = new Date("2025-07-15T12:00:00Z");
// America/New_York is UTC-5 in Winter
assertEquals(getUtcOffsetMs("America/New_York", jan), -5 * 3600000);
// America/New_York is UTC-4 in Summer
assertEquals(getUtcOffsetMs("America/New_York", july), -4 * 3600000);
});
Deno.test("getUtcOffsetMs - Paris (DST check)", () => {
const jan = new Date("2025-01-15T12:00:00Z");
const july = new Date("2025-07-15T12:00:00Z");
// Europe/Paris is UTC+1 in Winter
assertEquals(getUtcOffsetMs("Europe/Paris", jan), 1 * 3600000);
// Europe/Paris is UTC+2 in Summer
assertEquals(getUtcOffsetMs("Europe/Paris", july), 2 * 3600000);
});