flake-update-20260201
1package timerange
2
3import (
4 "testing"
5 "time"
6)
7
8func TestParse(t *testing.T) {
9 tests := []struct {
10 input string
11 wantErr bool
12 }{
13 {"today", false},
14 {"yesterday", false},
15 {"this week", false},
16 {"last week", false},
17 {"this month", false},
18 {"last month", false},
19 {"past 3 days", false},
20 {"past 2 weeks", false},
21 {"past 1 month", false},
22 {"last 7 days", false},
23 {"last 2 weeks", false},
24 {"2026-01-01..2026-01-15", false},
25 {"invalid", true},
26 {"past days", true},
27 {"", true},
28 }
29
30 for _, tt := range tests {
31 t.Run(tt.input, func(t *testing.T) {
32 tr, err := Parse(tt.input)
33 if (err != nil) != tt.wantErr {
34 t.Errorf("Parse(%q) error = %v, wantErr %v", tt.input, err, tt.wantErr)
35 return
36 }
37 if !tt.wantErr {
38 if tr == nil {
39 t.Errorf("Parse(%q) returned nil TimeRange", tt.input)
40 return
41 }
42 if tr.Start.After(tr.End) {
43 t.Errorf("Parse(%q) Start %v is after End %v", tt.input, tr.Start, tr.End)
44 }
45 if tr.Description == "" {
46 t.Errorf("Parse(%q) has empty Description", tt.input)
47 }
48 }
49 })
50 }
51}
52
53func TestStartOfWeek(t *testing.T) {
54 // Test that Monday is the start of week
55 wed := time.Date(2026, 1, 28, 15, 30, 0, 0, time.Local) // Wednesday
56 start := startOfWeek(wed)
57 if start.Weekday() != time.Monday {
58 t.Errorf("startOfWeek returned %v, want Monday", start.Weekday())
59 }
60 if start.Day() != 26 {
61 t.Errorf("startOfWeek returned day %d, want 26", start.Day())
62 }
63}
64
65func TestDateRange(t *testing.T) {
66 tr, err := Parse("2026-01-10..2026-01-20")
67 if err != nil {
68 t.Fatalf("Parse date range failed: %v", err)
69 }
70
71 if tr.Start.Day() != 10 || tr.Start.Month() != 1 || tr.Start.Year() != 2026 {
72 t.Errorf("Start date wrong: %v", tr.Start)
73 }
74 if tr.End.Day() != 20 || tr.End.Month() != 1 || tr.End.Year() != 2026 {
75 t.Errorf("End date wrong: %v", tr.End)
76 }
77}