Tariffs: fix zones creating duplicate entries (#21439)
This commit is contained in:
parent
2476dd7b9c
commit
2e6756f7b2
3 changed files with 21 additions and 12 deletions
|
|
@ -47,10 +47,14 @@ func (r Zones) TimeTableMarkers() []HourMin {
|
|||
|
||||
for _, z := range r {
|
||||
if !z.Hours.From.IsNil() {
|
||||
res = append(res, z.Hours.From)
|
||||
if !slices.Contains(res, z.Hours.From) {
|
||||
res = append(res, z.Hours.From)
|
||||
}
|
||||
}
|
||||
if !z.Hours.To.IsNil() {
|
||||
res = append(res, z.Hours.To)
|
||||
if !slices.Contains(res, z.Hours.To) {
|
||||
res = append(res, z.Hours.To)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -54,8 +54,12 @@ func TestZonesTimeTableMarkers(t *testing.T) {
|
|||
To: HourMin{2, 0},
|
||||
}},
|
||||
{Hours: TimeRange{
|
||||
From: HourMin{3, 30},
|
||||
To: HourMin{4, 30},
|
||||
From: HourMin{2, 0}, // make sure adjacent zones don't generate duplicate markers
|
||||
To: HourMin{3, 0},
|
||||
}},
|
||||
{Hours: TimeRange{
|
||||
From: HourMin{4, 30},
|
||||
To: HourMin{5, 30},
|
||||
}},
|
||||
}
|
||||
|
||||
|
|
@ -63,14 +67,15 @@ func TestZonesTimeTableMarkers(t *testing.T) {
|
|||
{0, 0},
|
||||
{1, 0},
|
||||
{2, 0},
|
||||
{3, 0}, // 1hr intervals
|
||||
{3, 30},
|
||||
{3, 0},
|
||||
{4, 0}, // 1hr intervals
|
||||
{4, 30},
|
||||
{5, 0}, // 1hr intervals
|
||||
{5, 30},
|
||||
}
|
||||
|
||||
// 1hr intervals
|
||||
for hour := 5; hour < 24; hour++ {
|
||||
for hour := 6; hour < 24; hour++ {
|
||||
expect = append(expect, HourMin{hour, 0})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ func TestFixedSplitZones(t *testing.T) {
|
|||
Price float64
|
||||
Hours string
|
||||
}{
|
||||
{0.1, "0-5:30,21-0"},
|
||||
{0.1, "0-5:30,20-21,21-0"},
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
|
@ -80,8 +80,8 @@ func TestFixedSplitZones(t *testing.T) {
|
|||
End: dayStart.Add(6 * time.Hour),
|
||||
})
|
||||
|
||||
// 06:00-21:00 0.5
|
||||
for hour := 6; hour < 21; hour++ {
|
||||
// 06:00-20:00 0.5
|
||||
for hour := 6; hour < 20; hour++ {
|
||||
expect = append(expect, api.Rate{
|
||||
Value: 0.5,
|
||||
Start: dayStart.Add(time.Hour * time.Duration(hour)),
|
||||
|
|
@ -89,8 +89,8 @@ func TestFixedSplitZones(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
// 21:00-00:00 0.1
|
||||
for hour := 21; hour < 24; hour++ {
|
||||
// 20:00-21:00,21:00-00:00 0.1
|
||||
for hour := 20; hour < 24; hour++ {
|
||||
expect = append(expect, api.Rate{
|
||||
Value: 0.1,
|
||||
Start: dayStart.Add(time.Hour * time.Duration(hour)),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue