@@ -85,19 +85,20 @@ func Test_simplifyHour(t *testing.T) {
8585 {"00:-10" , 0 , 0 , 0 },
8686 {"24:01" , 0 , 0 , 0 },
8787 {"-50:99" , 0 , 0 , 0 },
88- {"33:33:33" , 0 , 0 , 0 },
88+ {"33:33:33" , 9 , 33 , 33 }, // allow for 25:00:00 to be 1:00:00
89+ {"33:61:33" , 0 , 0 , 0 },
8990 }
9091 for _ , tt := range tests {
9192 t .Run (tt .args , func (t * testing.T ) {
9293 got , got1 , got2 := simplifyTime (tt .args )
9394 if got != tt .want {
94- t .Errorf ("simplifyHour() got = %v, want %v" , got , tt .want )
95+ t .Errorf ("simplifyHour(%s ) got = %v, want %v" , tt . args , got , tt .want )
9596 }
9697 if got1 != tt .want1 {
97- t .Errorf ("simplifyHour() got1 = %v, want %v" , got1 , tt .want1 )
98+ t .Errorf ("simplifyHour(%s ) got1 = %v, want %v" , tt . args , got1 , tt .want1 )
9899 }
99100 if got2 != tt .want2 {
100- t .Errorf ("simplifyHour() got2 = %v, want %v" , got2 , tt .want2 )
101+ t .Errorf ("simplifyHour(%s ) got2 = %v, want %v" , tt . args , got2 , tt .want2 )
101102 }
102103 })
103104 }
@@ -225,8 +226,8 @@ func TestNew(t *testing.T) {
225226 {"empty ;" , ";" , l , []time.Time {newDate (0 , 0 , 0 , 0 , 0 , l ), newDate (7 , 0 , 0 , 0 , 0 , l )}},
226227 {"all day ;" , "su-sa 00:00-24:00;" , l , []time.Time {newDate (0 , 0 , 0 , 0 , 0 , l ), newDate (7 , 0 , 0 , 0 , 0 , l )}},
227228 {"empty and no tz" , "" , nil , []time.Time {newDate (0 , 0 , 0 , 0 , 0 , time .UTC ), newDate (7 , 0 , 0 , 0 , 0 , time .UTC )}},
228- {"order on same sentense " , "mo,tu 10:00-11:00" , nil , NewMust ("tu,mo 10:00-11:00" , nil )},
229- {"order on different sentenses " , "mo 10:00-11:00;tu 10:00-12:00" , nil , NewMust ("tu 10:00-12:00;mo 10:00-11:00" , nil )},
229+ {"order on same sentence " , "mo,tu 10:00-11:00" , nil , NewMust ("tu,mo 10:00-11:00" , nil )},
230+ {"order on different sentences " , "mo 10:00-11:00;tu 10:00-12:00" , nil , NewMust ("tu 10:00-12:00;mo 10:00-11:00" , nil )},
230231 {"complex = simple" , "su-sa 00:00-12:00,12:00-24:00" , l , NewMust ("" , l )},
231232 {"complex = simple" , "su-sa 00:00-12:00;su-sa 12:00-24:00" , l , NewMust ("" , l )},
232233 {"time windows order does not matter anymore" , "mo-su 00:00-24:00" , l , NewMust ("" , l )},
@@ -387,3 +388,33 @@ func TestOpenHours_String(t *testing.T) {
387388 })
388389 }
389390}
391+
392+ func TestOpenHours_ClosingAfterMidnight (t * testing.T ) {
393+ o1 := NewMust ("mo 22:00-02:00" , l )
394+ o2 := NewMust ("mo 22:00-26:00" , l )
395+ tests := []struct {
396+ o OpenHours
397+ name string
398+ now time.Time
399+ want bool
400+ }{
401+ {o1 , "before" , time .Date (2019 , 3 , 4 , 21 , 0 , 0 , 0 , l ), false },
402+ {o1 , "start" , time .Date (2019 , 3 , 4 , 22 , 0 , 0 , 0 , l ), true },
403+ {o1 , "between" , time .Date (2019 , 3 , 4 , 23 , 0 , 0 , 0 , l ), true },
404+ {o1 , "end" , time .Date (2019 , 3 , 5 , 2 , 0 , 0 , 0 , l ), false },
405+ {o1 , "after" , time .Date (2019 , 3 , 5 , 3 , 0 , 0 , 0 , l ), false },
406+ // using the 26:00 = 02:00 next day notation
407+ {o2 , "before" , time .Date (2019 , 3 , 4 , 21 , 0 , 0 , 0 , l ), false },
408+ {o2 , "start" , time .Date (2019 , 3 , 4 , 22 , 0 , 0 , 0 , l ), true },
409+ {o2 , "between" , time .Date (2019 , 3 , 4 , 23 , 0 , 0 , 0 , l ), true },
410+ {o2 , "end" , time .Date (2019 , 3 , 5 , 2 , 0 , 0 , 0 , l ), false },
411+ {o2 , "after" , time .Date (2019 , 3 , 5 , 3 , 0 , 0 , 0 , l ), false },
412+ }
413+ for _ , tt := range tests {
414+ t .Run (tt .name , func (t * testing.T ) {
415+ if got , got1 := tt .o .NextDur (tt .now ); got != tt .want {
416+ t .Errorf ("OpenHours.NextDur().Open = %v, want %v, duration: %v" , got , tt .want , got1 )
417+ }
418+ })
419+ }
420+ }
0 commit comments