| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- package routing
- import (
- "testing"
- "time"
- )
- func TestInQuietHours(t *testing.T) {
- mkTime := func(h, m int) time.Time {
- return time.Date(0, 1, 1, h, m, 0, 0, time.UTC)
- }
- mkNow := func(h, m int) time.Time {
- // 2026-06-13 — a Saturday, in UTC.
- return time.Date(2026, 6, 13, h, m, 0, 0, time.UTC)
- }
- cases := []struct {
- name string
- now time.Time
- quietStart time.Time
- quietEnd time.Time
- tz string
- want bool
- }{
- {
- name: "same-day window: 09:00-17:00, now=12:00",
- now: mkNow(12, 0),
- quietStart: mkTime(9, 0),
- quietEnd: mkTime(17, 0),
- tz: "UTC",
- want: true,
- },
- {
- name: "same-day window: 09:00-17:00, now=08:00 (before)",
- now: mkNow(8, 0),
- quietStart: mkTime(9, 0),
- quietEnd: mkTime(17, 0),
- tz: "UTC",
- want: false,
- },
- {
- name: "same-day window: 09:00-17:00, now=18:00 (after)",
- now: mkNow(18, 0),
- quietStart: mkTime(9, 0),
- quietEnd: mkTime(17, 0),
- tz: "UTC",
- want: false,
- },
- {
- name: "wrap-around: 22:00-06:00, now=23:00 (in)",
- now: mkNow(23, 0),
- quietStart: mkTime(22, 0),
- quietEnd: mkTime(6, 0),
- tz: "UTC",
- want: true,
- },
- {
- name: "wrap-around: 22:00-06:00, now=03:00 (in)",
- now: mkNow(3, 0),
- quietStart: mkTime(22, 0),
- quietEnd: mkTime(6, 0),
- tz: "UTC",
- want: true,
- },
- {
- name: "wrap-around: 22:00-06:00, now=12:00 (out)",
- now: mkNow(12, 0),
- quietStart: mkTime(22, 0),
- quietEnd: mkTime(6, 0),
- tz: "UTC",
- want: false,
- },
- {
- name: "always quiet: 00:00-00:00 (Carol's seed)",
- now: mkNow(15, 0),
- quietStart: mkTime(0, 0),
- quietEnd: mkTime(0, 0),
- tz: "UTC",
- want: true,
- },
- {
- name: "never quiet: 12:00-12:00",
- now: mkNow(15, 0),
- quietStart: mkTime(12, 0),
- quietEnd: mkTime(12, 0),
- tz: "UTC",
- want: false,
- },
- {
- name: "edge: same-day window, now exactly at start (in)",
- now: mkNow(9, 0),
- quietStart: mkTime(9, 0),
- quietEnd: mkTime(17, 0),
- tz: "UTC",
- want: true,
- },
- {
- name: "edge: same-day window, now exactly at end (out)",
- now: mkNow(17, 0),
- quietStart: mkTime(9, 0),
- quietEnd: mkTime(17, 0),
- tz: "UTC",
- want: false,
- },
- }
- for _, tc := range cases {
- t.Run(tc.name, func(t *testing.T) {
- got := inQuietHours(tc.now, tc.quietStart, tc.quietEnd, tc.tz)
- if got != tc.want {
- t.Errorf("inQuietHours(now=%v, start=%v, end=%v, tz=%q) = %v, want %v",
- tc.now.Format("15:04"), tc.quietStart.Format("15:04"), tc.quietEnd.Format("15:04"),
- tc.tz, got, tc.want)
- }
- })
- }
- }
|