@@ -12,7 +12,7 @@ var l *time.Location
1212
1313func init () {
1414 var err error
15- l , err = time .LoadLocation ("Europe/London" ) // is a good test example since i know when the two clock change occur
15+ l , err = time .LoadLocation ("Europe/London" ) // is a good test example since i know when the two clock changes occur
1616 if err != nil {
1717 panic ("could not load location" )
1818 }
@@ -49,16 +49,16 @@ func Test_simplifyDays(t *testing.T) {
4949 args string
5050 want []int
5151 }{
52- {"simple" , "mo" , []int {1 }},
53- {"double with error" , "mo,mardi" , []int {1 }},
54- {"double with error" , "mo,mardi" , []int {1 }},
55- {"double" , "we,fr" , []int {3 , 5 }},
56- {"range" , "we-fr" , []int {3 , 4 , 5 }},
57- {"range with double" , "mo,we-fr,su" , []int {0 , 1 , 3 , 4 , 5 }},
52+ {"weird range" , "fr-mo" , []int {Monday , Friday , Saturday , Sunday }},
53+ {"simple" , "mo" , []int {Monday }},
54+ {"double with error" , "mo,mardi" , []int {Monday }},
55+ {"double with error" , "mo,mardi" , []int {Monday }},
56+ {"double" , "we,fr" , []int {Wednesday , Friday }},
57+ {"range" , "we-fr" , []int {Wednesday , Thursday , Friday }},
58+ {"range with double" , "mo,we-fr,su" , []int {Monday , Wednesday , Thursday , Friday , Sunday }},
5859 {"error -" , "mo-pl" , []int {}},
59- {"error ," , "pl,mo" , []int {1 }},
60- {"weird range" , "fr-mo" , []int {0 , 1 , 5 , 6 }},
61- {"dupicate days" , "mo-tu,tu,tu-fr,fr" , []int {1 , 2 , 3 , 4 , 5 }},
60+ {"error ," , "pl,mo" , []int {Monday }},
61+ {"duplicate days" , "mo-tu,tu,tu-fr,fr" , []int {Monday , Tuesday , Wednesday , Thursday , Friday }},
6262 }
6363 for _ , tt := range tests {
6464 t .Run (tt .name , func (t * testing.T ) {
@@ -110,17 +110,18 @@ func Test_feature_simple(t *testing.T) {
110110 t .Error (err )
111111 }
112112 tests := []struct {
113+ name string
113114 args time.Time
114115 want bool
115116 }{
116- {time . Date ( 2019 , 3 , 4 , 8 , 0 , 0 , 0 , l ), true }, // special case start = true
117- {time . Date ( 2019 , 3 , 4 , 17 , 59 , 0 , 0 , l ), true },
118- {time . Date ( 2019 , 3 , 4 , 18 , 0 , 0 , 0 , l ), false }, // special case end = false
119- {time . Date ( 2019 , 3 , 4 , 7 , 0 , 0 , 0 , l ), false },
120- {time . Date ( 2019 , 3 , 4 , 19 , 0 , 0 , 0 , l ), false },
117+ {"before" , newDate ( Monday , 7 , 0 , 0 , 0 , l ), false },
118+ {"start" , newDate ( Monday , 8 , 0 , 0 , 0 , l ), true }, // special case start = true
119+ {"during" , newDate ( Monday , 17 , 59 , 0 , 0 , l ), true },
120+ {"end" , newDate ( Monday , 18 , 0 , 0 , 0 , l ), false }, // special case end = false
121+ {"after" , newDate ( Monday , 19 , 0 , 0 , 0 , l ), false },
121122 }
122123 for _ , tt := range tests {
123- t .Run (tt .args . String () , func (t * testing.T ) {
124+ t .Run (tt .name , func (t * testing.T ) {
124125 if got := o .Match (tt .args ); got != tt .want {
125126 t .Errorf ("simplifyHour() got = %v, want %v" , got , tt .want )
126127 }
@@ -137,16 +138,16 @@ func Test_feature_two(t *testing.T) {
137138 args time.Time
138139 want bool
139140 }{
140- {time . Date ( 2019 , 3 , 4 , 8 , 0 , 0 , 0 , l ), true }, // special case start = true
141- {time . Date ( 2019 , 3 , 4 , 9 , 0 , 0 , 0 , l ), true },
142- {time . Date ( 2019 , 3 , 4 , 13 , 0 , 0 , 0 , l ), true }, // special case start = true
143- {time . Date ( 2019 , 3 , 4 , 15 , 0 , 0 , 0 , l ), true },
144- {time . Date ( 2019 , 3 , 4 , 12 , 30 , 0 , 0 , l ), false }, // between
145- {time . Date ( 2019 , 3 , 4 , 17 , 59 , 0 , 0 , l ), false },
146- {time . Date ( 2019 , 3 , 4 , 17 , 0 , 0 , 0 , l ), false }, // special case end = false
147- {time . Date ( 2019 , 3 , 4 , 12 , 0 , 0 , 0 , l ), false }, // special case end = false
148- {time . Date ( 2019 , 3 , 4 , 7 , 0 , 0 , 0 , l ), false },
149- {time . Date ( 2019 , 3 , 4 , 19 , 0 , 0 , 0 , l ), false },
141+ {newDate ( Monday , 8 , 0 , 0 , 0 , l ), true }, // special case start = true
142+ {newDate ( Monday , 9 , 0 , 0 , 0 , l ), true },
143+ {newDate ( Monday , 13 , 0 , 0 , 0 , l ), true }, // special case start = true
144+ {newDate ( Monday , 15 , 0 , 0 , 0 , l ), true },
145+ {newDate ( Monday , 12 , 30 , 0 , 0 , l ), false }, // between
146+ {newDate ( Monday , 17 , 59 , 0 , 0 , l ), false },
147+ {newDate ( Monday , 17 , 0 , 0 , 0 , l ), false }, // special case end = false
148+ {newDate ( Monday , 12 , 0 , 0 , 0 , l ), false }, // special case end = false
149+ {newDate ( Monday , 7 , 0 , 0 , 0 , l ), false },
150+ {newDate ( Monday , 19 , 0 , 0 , 0 , l ), false },
150151 }
151152 for _ , tt := range tests {
152153 t .Run (tt .args .String (), func (t * testing.T ) {
@@ -168,12 +169,12 @@ func TestOpenHours_NextDur(t *testing.T) {
168169 want bool
169170 want1 time.Duration
170171 }{
171- {"1 hour before start" , time . Date ( 2019 , 3 , 4 , 7 , 0 , 0 , 0 , l ), false , time .Hour },
172- {"at start" , time . Date ( 2019 , 3 , 4 , 8 , 0 , 0 , 0 , l ), true , 10 * time .Hour },
173- {"1 hour after start" , time . Date ( 2019 , 3 , 4 , 9 , 0 , 0 , 0 , l ), true , 9 * time .Hour },
174- {"1 hour before end" , time . Date ( 2019 , 3 , 4 , 17 , 0 , 0 , 0 , l ), true , time .Hour },
175- {"at end" , time . Date ( 2019 , 3 , 4 , 18 , 0 , 0 , 0 , l ), false , time .Hour * 24 * 7 - time .Hour * 10 },
176- {"1 day after start (closed)" , time . Date ( 2019 , 3 , 5 , 8 , 0 , 0 , 0 , l ), false , time .Hour * 24 * 6 },
172+ {"1 hour before start" , newDate ( Monday , 7 , 0 , 0 , 0 , l ), false , time .Hour },
173+ {"at start" , newDate ( Monday , 8 , 0 , 0 , 0 , l ), true , 10 * time .Hour },
174+ {"1 hour after start" , newDate ( Monday , 9 , 0 , 0 , 0 , l ), true , 9 * time .Hour },
175+ {"1 hour before end" , newDate ( Monday , 17 , 0 , 0 , 0 , l ), true , time .Hour },
176+ {"at end" , newDate ( Monday , 18 , 0 , 0 , 0 , l ), false , time .Hour * 24 * 7 - time .Hour * 10 },
177+ {"1 day after start (closed)" , newDate ( Tuesday , 8 , 0 , 0 , 0 , l ), false , time .Hour * 24 * 6 },
177178 }
178179 for _ , tt := range tests {
179180 t .Run (tt .name , func (t * testing.T ) {
@@ -199,17 +200,17 @@ func TestOpenHours_Special_NextDur(t *testing.T) {
199200 want bool
200201 want1 time.Duration
201202 }{
202- {"2 h before (3 if there was no clock change)" , time . Date ( 2019 , 3 , 31 , 0 , 0 , 0 , 0 , l ), false , time .Hour * 2 },
203- {"4 h before (3 if there was no clock change)" , time . Date ( 2019 , 10 , 27 , 0 , 0 , 0 , 0 , l ), false , time .Hour * 4 },
203+ {"2 h before (3 if there was no clock change)" , newDate ( Sunday , 1 , 0 , 0 , 0 , l ), false , time .Hour * 2 },
204+ {"4 h before (3 if there was no clock change)" , newDate ( Saturday , 23 , 0 , 0 , 0 , l ), false , time .Hour * 4 },
204205 }
205206 for _ , tt := range tests {
206207 t .Run (tt .name , func (t * testing.T ) {
207208 got , got1 := o .NextDur (tt .args )
208209 if got != tt .want {
209- t .Errorf ("OpenHours.NextDur() got = %v, want %v" , got , tt .want )
210+ t .Errorf ("OpenHours.NextDur() got = %v, want %v have %v " , got , tt .want , o )
210211 }
211212 if got1 != tt .want1 {
212- t .Errorf ("OpenHours.NextDur() got1 = %v, want %v" , got1 , tt .want1 )
213+ t .Errorf ("OpenHours.NextDur() got1 = %v, want %v have %v " , got1 , tt .want1 , o )
213214 }
214215 })
215216 }
@@ -222,24 +223,33 @@ func TestNew(t *testing.T) {
222223 args2 * time.Location
223224 want OpenHours
224225 }{
225- {"empty" , "" , l , []time.Time {newDate (0 , 0 , 0 , 0 , 0 , l ), newDate (7 , 0 , 0 , 0 , 0 , l )}},
226- {"empty ;" , ";" , l , []time.Time {newDate (0 , 0 , 0 , 0 , 0 , l ), newDate (7 , 0 , 0 , 0 , 0 , l )}},
227- {"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 )}},
228- {"empty and no tz" , "" , nil , []time.Time {newDate (0 , 0 , 0 , 0 , 0 , time .UTC ), newDate (7 , 0 , 0 , 0 , 0 , time .UTC )}},
226+ {"empty" , "" , l , []time.Time {newDate (Monday , 0 , 0 , 0 , 0 , l ), newDate (Sunday , 24 , 0 , 0 , 0 , l )}},
227+ {"empty ;" , ";" , l , []time.Time {newDate (Monday , 0 , 0 , 0 , 0 , l ), newDate (Sunday , 24 , 0 , 0 , 0 , l )}},
228+ {"all day ;" , "su-sa 00:00-24:00;" , l , []time.Time {newDate (Monday , 0 , 0 , 0 , 0 , l ), newDate (Sunday , 24 , 0 , 0 , 0 , l )}},
229+ {"empty and no tz" , "" , nil , []time.Time {newDate (Monday , 0 , 0 , 0 , 0 , time .UTC ), newDate (Sunday , 24 , 0 , 0 , 0 , time .UTC )}},
229230 {"order on same sentence" , "mo,tu 10:00-11:00" , nil , NewMust ("tu,mo 10:00-11:00" , nil )},
230231 {"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 )},
231232 {"complex = simple" , "su-sa 00:00-12:00,12:00-24:00" , l , NewMust ("" , l )},
232233 {"complex = simple" , "su-sa 00:00-12:00;su-sa 12:00-24:00" , l , NewMust ("" , l )},
233234 {"time windows order does not matter anymore" , "mo-su 00:00-24:00" , l , NewMust ("" , l )},
234- {"one day" , "mo 10:00-15:00" , l , []time.Time {newDate (1 , 10 , 0 , 0 , 0 , l ), newDate (1 , 15 , 0 , 0 , 0 , l )}},
235- {"two days" , "mo 10:00-15:00;fr 08:00-14:00" , l , []time.Time {newDate (1 , 10 , 0 , 0 , 0 , l ), newDate (1 , 15 , 0 , 0 , 0 , l ), newDate (5 , 8 , 0 , 0 , 0 , l ), newDate (5 , 14 , 0 , 0 , 0 , l )}},
235+ {"one day" , "mo 10:00-15:00" , l , []time.Time {newDate (Monday , 10 , 0 , 0 , 0 , l ), newDate (Monday , 15 , 0 , 0 , 0 , l )}},
236+ {"two days" , "mo 10:00-15:00;fr 08:00-14:00" , l , []time.Time {newDate (Monday , 10 , 0 , 0 , 0 , l ), newDate (Monday , 15 , 0 , 0 , 0 , l ), newDate (Friday , 8 , 0 , 0 , 0 , l ), newDate (Friday , 14 , 0 , 0 , 0 , l )}},
236237 {"week with break" , "Tu-Th 10:30-13:00,14:00-24:00" , l , []time.Time {
237- newDate (2 , 10 , 30 , 0 , 0 , l ), newDate (2 , 13 , 0 , 0 , 0 , l ),
238- newDate (2 , 14 , 0 , 0 , 0 , l ), newDate (2 , 24 , 0 , 0 , 0 , l ),
239- newDate (3 , 10 , 30 , 0 , 0 , l ), newDate (3 , 13 , 0 , 0 , 0 , l ),
240- newDate (3 , 14 , 0 , 0 , 0 , l ), newDate (3 , 24 , 0 , 0 , 0 , l ),
241- newDate (4 , 10 , 30 , 0 , 0 , l ), newDate (4 , 13 , 0 , 0 , 0 , l ),
242- newDate (4 , 14 , 0 , 0 , 0 , l ), newDate (4 , 24 , 0 , 0 , 0 , l ),
238+ newDate (Tuesday , 10 , 30 , 0 , 0 , l ), newDate (Tuesday , 13 , 0 , 0 , 0 , l ),
239+ newDate (Tuesday , 14 , 0 , 0 , 0 , l ), newDate (Tuesday , 24 , 0 , 0 , 0 , l ),
240+ newDate (Wednesday , 10 , 30 , 0 , 0 , l ), newDate (Wednesday , 13 , 0 , 0 , 0 , l ),
241+ newDate (Wednesday , 14 , 0 , 0 , 0 , l ), newDate (Wednesday , 24 , 0 , 0 , 0 , l ),
242+ newDate (Thursday , 10 , 30 , 0 , 0 , l ), newDate (Thursday , 13 , 0 , 0 , 0 , l ),
243+ newDate (Thursday , 14 , 0 , 0 , 0 , l ), newDate (Thursday , 24 , 0 , 0 , 0 , l ),
244+ }},
245+ {"" , "Mo-Sa 10:00-21:00; Su 12:00-19:00" , l , []time.Time {
246+ newDate (Monday , 10 , 0 , 0 , 0 , l ), newDate (Monday , 21 , 0 , 0 , 0 , l ),
247+ newDate (Tuesday , 10 , 0 , 0 , 0 , l ), newDate (Tuesday , 21 , 0 , 0 , 0 , l ),
248+ newDate (Wednesday , 10 , 0 , 0 , 0 , l ), newDate (Wednesday , 21 , 0 , 0 , 0 , l ),
249+ newDate (Thursday , 10 , 0 , 0 , 0 , l ), newDate (Thursday , 21 , 0 , 0 , 0 , l ),
250+ newDate (Friday , 10 , 0 , 0 , 0 , l ), newDate (Friday , 21 , 0 , 0 , 0 , l ),
251+ newDate (Saturday , 10 , 0 , 0 , 0 , l ), newDate (Saturday , 21 , 0 , 0 , 0 , l ),
252+ newDate (Sunday , 12 , 0 , 0 , 0 , l ), newDate (Sunday , 19 , 0 , 0 , 0 , l ),
243253 }},
244254 }
245255 for _ , tt := range tests {
@@ -266,8 +276,8 @@ func TestOpenHours_NextDate(t *testing.T) {
266276 want bool
267277 want1 time.Time
268278 }{
269- {"2 h before (3 if there was no clock change)" , time . Date ( 2019 , 3 , 31 , 0 , 0 , 0 , 0 , l ), false , time . Date ( 2019 , 3 , 31 , 3 , 0 , 0 , 0 , l )},
270- {"4 h before (3 if there was no clock change)" , time . Date ( 2019 , 10 , 27 , 0 , 0 , 0 , 0 , l ), false , time . Date ( 2019 , 10 , 27 , 3 , 0 , 0 , 0 , l )},
279+ {"2 h before (3 if there was no clock change)" , newDate ( Sunday , 1 , 0 , 0 , 0 , l ), false , newDate ( Sunday , 3 , 0 , 0 , 0 , l )},
280+ {"4 h before (3 if there was no clock change)" , newDate ( Saturday , 23 , 0 , 0 , 0 , l ), false , newDate ( Sunday , 3 , 0 , 0 , 0 , l )},
271281 }
272282 for _ , tt := range tests {
273283 t .Run (tt .name , func (t * testing.T ) {
@@ -282,8 +292,8 @@ func TestOpenHours_NextDate(t *testing.T) {
282292 }
283293}
284294
285- func pDate (year int , month time. Month , day , hour , min , sec , nsec int , loc * time.Location ) * time.Time {
286- t := time . Date ( year , month , day , hour , min , sec , nsec , loc )
295+ func pDate (day , hour , min , sec , nsec int , loc * time.Location ) * time.Time {
296+ t := newDate ( day , hour , min , sec , nsec , loc )
287297 return & t
288298}
289299
@@ -298,19 +308,19 @@ func TestOpenHours_When(t *testing.T) {
298308 args args
299309 want * time.Time
300310 }{
301- {"at start of open and have time" , NewMust ("mo 10:00-15:00" , l ), args {time . Date ( 2019 , 3 , 11 , 10 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (2019 , 3 , 11 , 10 , 0 , 0 , 0 , l )},
302- {"before start of open and have time" , NewMust ("mo 10:00-15:00" , l ), args {time . Date ( 2019 , 3 , 11 , 9 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (2019 , 3 , 11 , 10 , 0 , 0 , 0 , l )},
303- {"at end of open and have time" , NewMust ("mo 10:00-15:00" , l ), args {time . Date ( 2019 , 3 , 11 , 15 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (2019 , 3 , 18 , 10 , 0 , 0 , 0 , l )},
304- {"after end of open and have time" , NewMust ("mo 10:00-15:00" , l ), args {time . Date ( 2019 , 3 , 11 , 16 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (2019 , 3 , 18 , 10 , 0 , 0 , 0 , l )},
305- {"between open and have time" , NewMust ("mo 10:00-15:00" , l ), args {time . Date ( 2019 , 3 , 11 , 11 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (2019 , 3 , 11 , 11 , 0 , 0 , 0 , l )},
306- {"between open and no time" , NewMust ("mo 10:00-15:00" , l ), args {time . Date ( 2019 , 3 , 11 , 14 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (2019 , 3 , 18 , 10 , 0 , 0 , 0 , l )},
307- {"no time" , NewMust ("mo 10:00-11:00" , l ), args {time . Date ( 2019 , 3 , 11 , 14 , 0 , 0 , 0 , l ), time .Hour * 4 }, nil },
308- {"at start of open and have time +fri" , NewMust ("mo 10:00-15:00;fr 08:00-14:00" , l ), args {time . Date ( 2019 , 3 , 11 , 10 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (2019 , 3 , 11 , 10 , 0 , 0 , 0 , l )},
309- {"before start of open and have time +fri" , NewMust ("mo 10:00-15:00;fr 08:00-14:00" , l ), args {time . Date ( 2019 , 3 , 11 , 9 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (2019 , 3 , 11 , 10 , 0 , 0 , 0 , l )},
310- {"at end of open and have time +fri" , NewMust ("mo 10:00-15:00;fr 08:00-14:00" , l ), args {time . Date ( 2019 , 3 , 11 , 15 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (2019 , 3 , 15 , 8 , 0 , 0 , 0 , l )},
311- {"after end of open and have time +fri" , NewMust ("mo 10:00-15:00;fr 08:00-14:00" , l ), args {time . Date ( 2019 , 3 , 11 , 16 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (2019 , 3 , 15 , 8 , 0 , 0 , 0 , l )},
312- {"between open and have time +fri" , NewMust ("mo 10:00-15:00;fr 08:00-14:00" , l ), args {time . Date ( 2019 , 3 , 11 , 11 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (2019 , 3 , 11 , 11 , 0 , 0 , 0 , l )},
313- {"between open and no time +fri" , NewMust ("mo 10:00-15:00;fr 08:00-14:00" , l ), args {time . Date ( 2019 , 3 , 11 , 14 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (2019 , 3 , 15 , 8 , 0 , 0 , 0 , l )},
311+ {"at start of open and have time" , NewMust ("mo 10:00-15:00" , l ), args {newDate ( Monday , 11 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (1 , 11 , 0 , 0 , 0 , l )},
312+ {"before start of open and have time" , NewMust ("mo 10:00-15:00" , l ), args {newDate ( Monday , 9 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (1 , 10 , 0 , 0 , 0 , l )},
313+ {"at end of open and have time" , NewMust ("mo 10:00-15:00" , l ), args {newDate ( Monday , 15 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (8 , 10 , 0 , 0 , 0 , l )},
314+ {"after end of open and have time" , NewMust ("mo 10:00-15:00" , l ), args {newDate ( Monday , 16 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (8 , 10 , 0 , 0 , 0 , l )},
315+ {"between open and have time" , NewMust ("mo 10:00-15:00" , l ), args {newDate ( Tuesday , 11 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (8 , 10 , 0 , 0 , 0 , l )},
316+ {"between open and no time" , NewMust ("mo 10:00-15:00" , l ), args {newDate ( Monday , 14 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (8 , 10 , 0 , 0 , 0 , l )},
317+ {"no time" , NewMust ("mo 10:00-11:00" , l ), args {newDate ( Monday , 14 , 0 , 0 , 0 , l ), time .Hour * 4 }, nil },
318+ {"at start of open and have time +fri" , NewMust ("mo 10:00-15:00;fr 08:00-14:00" , l ), args {newDate ( Monday , 10 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (1 , 10 , 0 , 0 , 0 , l )},
319+ {"before start of open and have time +fri" , NewMust ("mo 10:00-15:00;fr 08:00-14:00" , l ), args {newDate ( Monday , 9 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (1 , 10 , 0 , 0 , 0 , l )},
320+ {"at end of open and have time +fri" , NewMust ("mo 10:00-15:00;fr 08:00-14:00" , l ), args {newDate ( Monday , 15 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (5 , 8 , 0 , 0 , 0 , l )},
321+ {"after end of open and have time +fri" , NewMust ("mo 10:00-15:00;fr 08:00-14:00" , l ), args {newDate ( Monday , 16 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (5 , 8 , 0 , 0 , 0 , l )},
322+ {"between open and have time +fri" , NewMust ("mo 10:00-15:00;fr 08:00-14:00" , l ), args {newDate ( Monday , 11 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (1 , 11 , 0 , 0 , 0 , l )},
323+ {"between open and no time +fri" , NewMust ("mo 10:00-15:00;fr 08:00-14:00" , l ), args {newDate ( Monday , 14 , 0 , 0 , 0 , l ), time .Hour * 4 }, pDate (5 , 8 , 0 , 0 , 0 , l )},
314324 }
315325 for _ , tt := range tests {
316326 t .Run (tt .name , func (t * testing.T ) {
@@ -334,9 +344,9 @@ func TestOpenHours_Add(t *testing.T) {
334344 }{
335345 {
336346 "at start of open and have time" ,
337- OpenHours {}.Add (time . Date ( 2019 , 3 , 11 , 10 , 0 , 0 , 0 , l ), time . Date ( 2019 , 3 , 11 , 10 , 30 , 0 , 0 , l )), // mo 10:00-10:30
338- args {time . Date ( 2019 , 3 , 11 , 9 , 0 , 0 , 0 , l ), time .Second },
339- pDate (2019 , 3 , 11 , 10 , 0 , 0 , 0 , l ),
347+ OpenHours {}.Add (newDate ( 11 , 10 , 0 , 0 , 0 , l ), newDate ( 11 , 10 , 30 , 0 , 0 , l )), // mo 10:00-10:30
348+ args {newDate ( 11 , 9 , 0 , 0 , 0 , l ), time .Second },
349+ pDate (11 , 10 , 0 , 0 , 0 , l ),
340350 },
341351 }
342352 for _ , tt := range tests {
@@ -353,8 +363,8 @@ func TestOpenHours_Bugs(t *testing.T) {
353363 if err != nil {
354364 t .Error (err )
355365 }
356- when := o .When (time . Date ( 2020 , 4 , 26 , 9 , 0 , 0 , 0 , time .UTC ), time .Hour )
357- want := time . Date ( 2020 , 4 , 26 , 9 , 0 , 0 , 0 , time .UTC )
366+ when := o .When (newDate ( Sunday , 9 , 0 , 0 , 0 , time .UTC ), time .Hour )
367+ want := newDate ( Sunday , 9 , 0 , 0 , 0 , time .UTC )
358368 if when == nil || ! want .Equal (* when ) {
359369 t .Errorf ("OpenHours.When() = %v, want %v" , when , want )
360370 }
@@ -382,6 +392,7 @@ func TestOpenHours_String(t *testing.T) {
382392 {"empty" , OpenHours {}, []string {}},
383393 {"simple" , NewMust ("mo 10:00-15:00" , l ), []string {"Monday 10:00 - 15:00" }},
384394 {"two" , NewMust ("mo 10:00-15:00;fr 08:00-14:00" , l ), []string {"Monday 10:00 - 15:00" , "Friday 08:00 - 14:00" }},
395+ {"full week" , NewMust ("mo-su 09:00-17:00" , l ), []string {"Monday 09:00 - 17:00" , "Tuesday 09:00 - 17:00" , "Wednesday 09:00 - 17:00" , "Thursday 09:00 - 17:00" , "Friday 09:00 - 17:00" , "Saturday 09:00 - 17:00" , "Sunday 09:00 - 17:00" }},
385396 }
386397 for _ , tt := range tests {
387398 t .Run (tt .name , func (t * testing.T ) {
@@ -401,17 +412,17 @@ func TestOpenHours_ClosingAfterMidnight(t *testing.T) {
401412 now time.Time
402413 want bool
403414 }{
404- {o1 , "before " , time . Date ( 2019 , 3 , 4 , 21 , 0 , 0 , 0 , l ), false },
405- {o1 , "start " , time . Date ( 2019 , 3 , 4 , 22 , 0 , 0 , 0 , l ), true },
406- {o1 , "between " , time . Date ( 2019 , 3 , 4 , 23 , 0 , 0 , 0 , l ), true },
407- {o1 , "end " , time . Date ( 2019 , 3 , 5 , 2 , 0 , 0 , 0 , l ), false },
408- {o1 , "after " , time . Date ( 2019 , 3 , 5 , 3 , 0 , 0 , 0 , l ), false },
415+ {o1 , "1before " , newDate ( Monday , 21 , 0 , 0 , 0 , l ), false },
416+ {o1 , "1start " , newDate ( Monday , 22 , 0 , 0 , 0 , l ), true },
417+ {o1 , "1between " , newDate ( Monday , 23 , 0 , 0 , 0 , l ), true },
418+ {o1 , "1end " , newDate ( Tuesday , 2 , 0 , 0 , 0 , l ), false },
419+ {o1 , "1after " , newDate ( Tuesday , 3 , 0 , 0 , 0 , l ), false },
409420 // using the 26:00 = 02:00 next day notation
410- {o2 , "before " , time . Date ( 2019 , 3 , 4 , 21 , 0 , 0 , 0 , l ), false },
411- {o2 , "start " , time . Date ( 2019 , 3 , 4 , 22 , 0 , 0 , 0 , l ), true },
412- {o2 , "between " , time . Date ( 2019 , 3 , 4 , 23 , 0 , 0 , 0 , l ), true },
413- {o2 , "end " , time . Date ( 2019 , 3 , 5 , 2 , 0 , 0 , 0 , l ), false },
414- {o2 , "after " , time . Date ( 2019 , 3 , 5 , 3 , 0 , 0 , 0 , l ), false },
421+ {o2 , "2before " , newDate ( Monday , 21 , 0 , 0 , 0 , l ), false },
422+ {o2 , "2start " , newDate ( Monday , 22 , 0 , 0 , 0 , l ), true },
423+ {o2 , "2between " , newDate ( Monday , 23 , 0 , 0 , 0 , l ), true },
424+ {o2 , "2end " , newDate ( Tuesday , 2 , 0 , 0 , 0 , l ), false },
425+ {o2 , "2after " , newDate ( Tuesday , 3 , 0 , 0 , 0 , l ), false },
415426 }
416427 for _ , tt := range tests {
417428 t .Run (tt .name , func (t * testing.T ) {
0 commit comments