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})