forked from evcc-io/evcc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfixed_test.go
78 lines (67 loc) · 1.55 KB
/
fixed_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package tariff
import (
"testing"
"github.com/benbjohnson/clock"
"github.com/evcc-io/evcc/api"
"github.com/evcc-io/evcc/tariff/fixed"
"github.com/golang-module/carbon/v2"
"github.com/stretchr/testify/assert"
)
func TestFixed(t *testing.T) {
tf := &Fixed{
clock: clock.NewMock(),
zones: []fixed.Zone{
{Price: 0.3},
},
}
var expect api.Rates
for i := 0; i < 7; i++ {
dayStart := carbon.FromStdTime(tf.clock.Now()).StartOfDay().AddDays(i)
expect = append(expect, api.Rate{
Price: 0.3,
Start: dayStart.ToStdTime(),
End: dayStart.AddDay().ToStdTime(),
})
}
rates, err := tf.Rates()
assert.NoError(t, err)
assert.Equal(t, expect, rates)
}
func TestFixedSplitZones(t *testing.T) {
at, err := NewFixedFromConfig(map[string]interface{}{
"price": 0.5,
"zones": []struct {
Price float64
Hours string
}{
{0.1, "0-5:30,21-0"},
},
})
assert.NoError(t, err)
tf := at.(*Fixed)
tf.clock = clock.NewMock()
var expect api.Rates
for i := 0; i < 7; i++ {
dayStart := carbon.FromStdTime(tf.clock.Now()).StartOfDay().AddDays(i)
expect = append(expect,
api.Rate{
Price: 0.1,
Start: dayStart.ToStdTime(),
End: dayStart.AddHours(5).AddMinutes(30).ToStdTime(),
},
api.Rate{
Price: 0.5,
Start: dayStart.AddHours(5).AddMinutes(30).ToStdTime(),
End: dayStart.AddHours(21).ToStdTime(),
},
api.Rate{
Price: 0.1,
Start: dayStart.AddHours(21).ToStdTime(),
End: dayStart.AddDay().ToStdTime(),
},
)
}
rates, err := tf.Rates()
assert.NoError(t, err)
assert.Equal(t, expect, rates)
}