Skip to content

Commit e025293

Browse files
Convert some DateTime and Duration tests to be table driven (#313)
Signed-off-by: PiotrLewandowski323 <lewandowski323@gmail.com>
1 parent 00bb185 commit e025293

2 files changed

Lines changed: 272 additions & 207 deletions

File tree

datetime_test.go

Lines changed: 136 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -196,117 +196,143 @@ func TestDateTime_IsLesser(t *testing.T) {
196196
}
197197

198198
func 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

252283
func 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

Comments
 (0)