83 lines
2.1 KiB
Go
83 lines
2.1 KiB
Go
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())
|
|
}
|
|
})
|
|
}
|
|
|
|
}
|