105 lines
2.3 KiB
Go
105 lines
2.3 KiB
Go
package device
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
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},
|
|
}
|
|
|
|
zeroSetpoints := []Setpoint{
|
|
{Start: 0, Preset_id: 0},
|
|
}
|
|
|
|
default_program := WeekProgram{
|
|
Monday: defaultSetpoints,
|
|
Thuesday: defaultSetpoints,
|
|
Wednesday: defaultSetpoints,
|
|
Thursday: defaultSetpoints,
|
|
Friday: defaultSetpoints,
|
|
Saturday: defaultSetpoints,
|
|
Sunday: defaultSetpoints,
|
|
}
|
|
|
|
zero_program := WeekProgram{
|
|
Monday: zeroSetpoints,
|
|
Thuesday: zeroSetpoints,
|
|
Wednesday: zeroSetpoints,
|
|
Thursday: zeroSetpoints,
|
|
Friday: zeroSetpoints,
|
|
Saturday: zeroSetpoints,
|
|
Sunday: zeroSetpoints,
|
|
}
|
|
|
|
var tests = []struct {
|
|
prog WeekProgram
|
|
time time.Time
|
|
want time.Time
|
|
}{
|
|
{
|
|
default_program,
|
|
time.Date(2022, time.October, 23, 9, 0, 0, 0, time.Local),
|
|
time.Date(2022, time.October, 23, 16, 0, 0, 0, time.Local),
|
|
},
|
|
{
|
|
default_program,
|
|
time.Date(2022, time.October, 24, 5, 0, 0, 0, time.Local),
|
|
time.Date(2022, time.October, 24, 7, 0, 0, 0, time.Local),
|
|
},
|
|
{
|
|
default_program,
|
|
time.Date(2022, time.October, 23, 23, 0, 0, 0, time.Local),
|
|
time.Date(2022, time.October, 24, 7, 0, 0, 0, time.Local),
|
|
},
|
|
{
|
|
zero_program,
|
|
time.Date(2022, time.October, 23, 23, 0, 0, 0, time.Local),
|
|
time.Date(2022, time.October, 24, 0, 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 := tt.prog.NextTime(tt.time)
|
|
if err != nil {
|
|
t.Fatalf(err.Error())
|
|
}
|
|
if !next.Equal(tt.want) {
|
|
t.Errorf("got %s, want %s", next.String(), tt.want.String())
|
|
}
|
|
})
|
|
}
|
|
|
|
}
|