BT  ·  2026-05-09

Time_test.res

 1open VitestHelpers
 2
 3describe("Time.humanize", () => {
 4  test("example from spec: 13322.0 -> 3h42m", ctx => {
 5    let result = Time.humanize(13322.0)
 6    expect(ctx, result)->toBe("3h42m")
 7  })
 8
 9  test("zero seconds", ctx => {
10    let result = Time.humanize(0.0)
11    expect(ctx, result)->toBe("0m")
12  })
13
14  test("less than a minute", ctx => {
15    let result = Time.humanize(45.0)
16    expect(ctx, result)->toBe("0m")
17  })
18
19  test("exactly one minute", ctx => {
20    let result = Time.humanize(60.0)
21    expect(ctx, result)->toBe("1m")
22  })
23
24  test("exactly one hour", ctx => {
25    let result = Time.humanize(3600.0)
26    expect(ctx, result)->toBe("1h0m")
27  })
28
29  test("one hour one minute", ctx => {
30    let result = Time.humanize(3660.0)
31    expect(ctx, result)->toBe("1h1m")
32  })
33
34  test("one hour one minute one second", ctx => {
35    let result = Time.humanize(3661.0)
36    expect(ctx, result)->toBe("1h1m")
37  })
38
39  test("59 minutes 59 seconds", ctx => {
40    let result = Time.humanize(3599.0)
41    expect(ctx, result)->toBe("59m")
42  })
43
44  test("large value: 25 hours", ctx => {
45    let result = Time.humanize(90061.0)
46    // 90061 = 25*3600 + 1*60 + 1 = 25h 1m 1s -> "25h1m"
47    expect(ctx, result)->toBe("25h1m")
48  })
49
50  test("30 minutes", ctx => {
51    let result = Time.humanize(1800.0)
52    expect(ctx, result)->toBe("30m")
53  })
54
55  test("fractional seconds truncated", ctx => {
56    let result = Time.humanize(90.9)
57    // 90.9 seconds = 1 minute + 30.9 seconds -> "1m"
58    expect(ctx, result)->toBe("1m")
59  })
60})