package device import ( "testing" "time" "fmt" ) func TestDaysBetween(t *testing.T) { var tests = []struct{ day1 DayOfWeek day2 DayOfWeek want int }{ { Monday, Thuesday, 1 }, { Thuesday, Monday, 6 }, { Sunday, Monday, 1 }, { Sunday, Thuesday, 2 }, { Friday, Friday, 0 }, } for _, tt := range tests { testname := fmt.Sprintf("Days between %d and %d", tt.day1, tt.day2 ) t.Run(testname, func(t *testing.T) { between := tt.day1.DaysBetween(tt.day2) if between != tt.want { t.Errorf("got %d, want %d", between, tt.want) } }) } } func TestNextTime(t *testing.T) { defaultSetpoints := []Setpoint{ {Start: 7*60, Preset_id: 1}, {Start: 8*60, Preset_id: 0}, {Start: 16*60, Preset_id: 1}, {Start: 22*60, Preset_id: 0}, } program := WeekProgram{ Monday: defaultSetpoints, Thuesday: defaultSetpoints, Wednesday: defaultSetpoints, Thursday : defaultSetpoints, Friday: defaultSetpoints, Saturday: defaultSetpoints, Sunday: defaultSetpoints, } var tests = []struct{ time time.Time want time.Time }{ { time.Date(2022, time.October, 23, 9, 0, 0, 0, time.Local), time.Date(2022, time.October, 23, 16, 0, 0, 0, time.Local), }, { time.Date(2022, time.October, 24, 5, 0, 0, 0, time.Local), time.Date(2022, time.October, 24, 7, 0, 0, 0, time.Local), }, { time.Date(2022, time.October, 23, 23, 0, 0, 0, time.Local), time.Date(2022, time.October, 24, 7, 0, 0, 0, time.Local), }, } for _, tt := range tests { testname := fmt.Sprintf("%s", tt.time.String() ) t.Run(testname, func(t *testing.T) { next, err := program.NextTime(tt.time) if err != nil { t.Fatalf("unexpected error") } if !next.Equal(tt.want) { t.Errorf("got %s, want %s", next.String(), tt.want.String()) } }) } }