@@ -196,117 +196,143 @@ func TestDateTime_IsLesser(t *testing.T) {
196196}
197197
198198func TestDateTime_InRange (t * testing.T ) {
199- reporter := newMockReporter (t )
200-
201- value := NewDateTime (reporter , time .Unix (0 , 1234 ))
202-
203- value .InRange (time .Unix (0 , 1234 ), time .Unix (0 , 1234 ))
204- value .chain .assertNotFailed (t )
205- value .chain .clearFailed ()
206-
207- value .NotInRange (time .Unix (0 , 1234 ), time .Unix (0 , 1234 ))
208- value .chain .assertFailed (t )
209- value .chain .clearFailed ()
210-
211- value .InRange (time .Unix (0 , 1234 - 1 ), time .Unix (0 , 1234 ))
212- value .chain .assertNotFailed (t )
213- value .chain .clearFailed ()
214-
215- value .NotInRange (time .Unix (0 , 1234 - 1 ), time .Unix (0 , 1234 ))
216- value .chain .assertFailed (t )
217- value .chain .clearFailed ()
218-
219- value .InRange (time .Unix (0 , 1234 ), time .Unix (0 , 1234 + 1 ))
220- value .chain .assertNotFailed (t )
221- value .chain .clearFailed ()
222-
223- value .NotInRange (time .Unix (0 , 1234 ), time .Unix (0 , 1234 + 1 ))
224- value .chain .assertFailed (t )
225- value .chain .clearFailed ()
226-
227- value .InRange (time .Unix (0 , 1234 + 1 ), time .Unix (0 , 1234 + 2 ))
228- value .chain .assertFailed (t )
229- value .chain .clearFailed ()
230-
231- value .NotInRange (time .Unix (0 , 1234 + 1 ), time .Unix (0 , 1234 + 2 ))
232- value .chain .assertNotFailed (t )
233- value .chain .clearFailed ()
234-
235- value .InRange (time .Unix (0 , 1234 - 2 ), time .Unix (0 , 1234 - 1 ))
236- value .chain .assertFailed (t )
237- value .chain .clearFailed ()
238-
239- value .NotInRange (time .Unix (0 , 1234 - 2 ), time .Unix (0 , 1234 - 1 ))
240- value .chain .assertNotFailed (t )
241- value .chain .clearFailed ()
242-
243- value .InRange (time .Unix (0 , 1234 + 1 ), time .Unix (0 , 1234 - 1 ))
244- value .chain .assertFailed (t )
245- value .chain .clearFailed ()
246-
247- value .NotInRange (time .Unix (0 , 1234 + 1 ), time .Unix (0 , 1234 - 1 ))
248- value .chain .assertNotFailed (t )
249- value .chain .clearFailed ()
199+ cases := []struct {
200+ name string
201+ value time.Time
202+ min time.Time
203+ max time.Time
204+ expectInRange bool
205+ expectNotInRange bool
206+ }{
207+ {
208+ name : "value equal to both min and max" ,
209+ value : time .Unix (0 , 1234 ),
210+ min : time .Unix (0 , 1234 ),
211+ max : time .Unix (0 , 1234 ),
212+ expectInRange : true ,
213+ expectNotInRange : false ,
214+ },
215+ {
216+ name : "value after min and equal to max" ,
217+ value : time .Unix (0 , 1234 ),
218+ min : time .Unix (0 , 1234 - 1 ),
219+ max : time .Unix (0 , 1234 ),
220+ expectInRange : true ,
221+ expectNotInRange : false ,
222+ },
223+ {
224+ name : "value equal to min and before max" ,
225+ value : time .Unix (0 , 1234 ),
226+ min : time .Unix (0 , 1234 ),
227+ max : time .Unix (0 , 1234 + 1 ),
228+ expectInRange : true ,
229+ expectNotInRange : false ,
230+ },
231+ {
232+ name : "value before range" ,
233+ value : time .Unix (0 , 1234 ),
234+ min : time .Unix (0 , 1234 + 1 ),
235+ max : time .Unix (0 , 1234 + 2 ),
236+ expectInRange : false ,
237+ expectNotInRange : true ,
238+ },
239+ {
240+ name : "value after range" ,
241+ value : time .Unix (0 , 1234 ),
242+ min : time .Unix (0 , 1234 - 2 ),
243+ max : time .Unix (0 , 1234 - 1 ),
244+ expectInRange : false ,
245+ expectNotInRange : true ,
246+ },
247+ {
248+ name : "invalid range" ,
249+ value : time .Unix (0 , 1234 ),
250+ min : time .Unix (0 , 1234 + 1 ),
251+ max : time .Unix (0 , 1234 - 1 ),
252+ expectInRange : false ,
253+ expectNotInRange : true ,
254+ },
255+ }
256+
257+ for _ , tc := range cases {
258+ t .Run (tc .name , func (t * testing.T ) {
259+ reporter := newMockReporter (t )
260+
261+ if tc .expectInRange {
262+ NewDateTime (reporter , tc .value ).
263+ InRange (tc .min , tc .max ).
264+ chain .assertNotFailed (t )
265+ } else {
266+ NewDateTime (reporter , tc .value ).
267+ InRange (tc .min , tc .max ).
268+ chain .assertFailed (t )
269+ }
270+ if tc .expectNotInRange {
271+ NewDateTime (reporter , tc .value ).
272+ NotInRange (tc .min , tc .max ).
273+ chain .assertNotFailed (t )
274+ } else {
275+ NewDateTime (reporter , tc .value ).
276+ NotInRange (tc .min , tc .max ).
277+ chain .assertFailed (t )
278+ }
279+ })
280+ }
250281}
251282
252283func TestDateTime_InList (t * testing.T ) {
253- reporter := newMockReporter (t )
254-
255- value := NewDateTime (reporter , time .Unix (0 , 1234 ))
256-
257- value .InList ()
258- value .chain .assertFailed (t )
259- value .chain .clearFailed ()
260-
261- value .NotInList ()
262- value .chain .assertFailed (t )
263- value .chain .clearFailed ()
264-
265- value .InList (time .Unix (0 , 1234 ), time .Unix (0 , 1234 ))
266- value .chain .assertNotFailed (t )
267- value .chain .clearFailed ()
268-
269- value .NotInList (time .Unix (0 , 1234 ), time .Unix (0 , 1234 ))
270- value .chain .assertFailed (t )
271- value .chain .clearFailed ()
272-
273- value .InList (time .Unix (0 , 1234 - 1 ), time .Unix (0 , 1234 ))
274- value .chain .assertNotFailed (t )
275- value .chain .clearFailed ()
276-
277- value .NotInList (time .Unix (0 , 1234 - 1 ), time .Unix (0 , 1234 ))
278- value .chain .assertFailed (t )
279- value .chain .clearFailed ()
280-
281- value .InList (time .Unix (0 , 1234 ), time .Unix (0 , 1234 + 1 ))
282- value .chain .assertNotFailed (t )
283- value .chain .clearFailed ()
284-
285- value .NotInList (time .Unix (0 , 1234 ), time .Unix (0 , 1234 + 1 ))
286- value .chain .assertFailed (t )
287- value .chain .clearFailed ()
288-
289- value .InList (time .Unix (0 , 1234 + 1 ), time .Unix (0 , 1234 + 2 ))
290- value .chain .assertFailed (t )
291- value .chain .clearFailed ()
292-
293- value .NotInList (time .Unix (0 , 1234 + 1 ), time .Unix (0 , 1234 + 2 ))
294- value .chain .assertNotFailed (t )
295- value .chain .clearFailed ()
296-
297- value .InList (time .Unix (0 , 1234 - 2 ), time .Unix (0 , 1234 - 1 ))
298- value .chain .assertFailed (t )
299- value .chain .clearFailed ()
300-
301- value .NotInList (time .Unix (0 , 1234 - 2 ), time .Unix (0 , 1234 - 1 ))
302- value .chain .assertNotFailed (t )
303- value .chain .clearFailed ()
304-
305- value .InList (time .Unix (0 , 1234 + 1 ), time .Unix (0 , 1234 - 1 ))
306- value .chain .assertFailed (t )
307- value .chain .clearFailed ()
308-
309- value .NotInList (time .Unix (0 , 1234 + 1 ), time .Unix (0 , 1234 - 1 ))
310- value .chain .assertNotFailed (t )
311- value .chain .clearFailed ()
284+ cases := []struct {
285+ name string
286+ value time.Time
287+ list []time.Time
288+ expectInList bool
289+ expectNotInList bool
290+ }{
291+ {
292+ name : "empty list" ,
293+ value : time .Unix (0 , 1234 ),
294+ list : []time.Time {},
295+ expectInList : false ,
296+ expectNotInList : false ,
297+ },
298+ {
299+ name : "value present in list" ,
300+ value : time .Unix (0 , 1234 ),
301+ list : []time.Time {time .Unix (0 , 1234 ), time .Unix (0 , 1234 + 1 )},
302+ expectInList : true ,
303+ expectNotInList : false ,
304+ },
305+ {
306+ name : "value not present in list" ,
307+ value : time .Unix (0 , 1234 ),
308+ list : []time.Time {time .Unix (0 , 1234 - 1 ), time .Unix (0 , 1234 + 1 )},
309+ expectInList : false ,
310+ expectNotInList : true ,
311+ },
312+ }
313+
314+ for _ , tc := range cases {
315+ t .Run (tc .name , func (t * testing.T ) {
316+ reporter := newMockReporter (t )
317+
318+ if tc .expectInList {
319+ NewDateTime (reporter , tc .value ).
320+ InList (tc .list ... ).
321+ chain .assertNotFailed (t )
322+ } else {
323+ NewDateTime (reporter , tc .value ).
324+ InList (tc .list ... ).
325+ chain .assertFailed (t )
326+ }
327+ if tc .expectNotInList {
328+ NewDateTime (reporter , tc .value ).
329+ NotInList (tc .list ... ).
330+ chain .assertNotFailed (t )
331+ } else {
332+ NewDateTime (reporter , tc .value ).
333+ NotInList (tc .list ... ).
334+ chain .assertFailed (t )
335+ }
336+ })
337+ }
312338}
0 commit comments