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}