heater/pkg/device/settings_test.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())
}
})
}
}