Skip to content

Commit 0bfda02

Browse files
jbrockmendelharisbal
authored and
harisbal
committed
parametrize a whole mess of tests (pandas-dev#19785)
1 parent e975455 commit 0bfda02

21 files changed

+742
-768
lines changed

pandas/tests/indexes/datetimes/test_arithmetic.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -614,19 +614,19 @@ def test_sub_dti_dti(self):
614614
result = dti2 - dti1
615615
tm.assert_index_equal(result, expected)
616616

617-
def test_sub_period(self):
618-
# GH 13078
617+
@pytest.mark.parametrize('freq', [None, 'D'])
618+
def test_sub_period(self, freq):
619+
# GH#13078
619620
# not supported, check TypeError
620621
p = pd.Period('2011-01-01', freq='D')
621622

622-
for freq in [None, 'D']:
623-
idx = pd.DatetimeIndex(['2011-01-01', '2011-01-02'], freq=freq)
623+
idx = pd.DatetimeIndex(['2011-01-01', '2011-01-02'], freq=freq)
624624

625-
with pytest.raises(TypeError):
626-
idx - p
625+
with pytest.raises(TypeError):
626+
idx - p
627627

628-
with pytest.raises(TypeError):
629-
p - idx
628+
with pytest.raises(TypeError):
629+
p - idx
630630

631631
def test_ufunc_coercions(self):
632632
idx = date_range('2011-01-01', periods=3, freq='2D', name='x')

pandas/tests/indexes/datetimes/test_construction.py

+73-77
Original file line numberDiff line numberDiff line change
@@ -351,52 +351,51 @@ def test_constructor_coverage(self):
351351
freq='B')
352352
pytest.raises(ValueError, DatetimeIndex, periods=10, freq='D')
353353

354-
def test_constructor_datetime64_tzformat(self):
355-
# see gh-6572: ISO 8601 format results in pytz.FixedOffset
356-
for freq in ['AS', 'W-SUN']:
357-
idx = date_range('2013-01-01T00:00:00-05:00',
358-
'2016-01-01T23:59:59-05:00', freq=freq)
359-
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
360-
freq=freq, tz=pytz.FixedOffset(-300))
361-
tm.assert_index_equal(idx, expected)
362-
# Unable to use `US/Eastern` because of DST
363-
expected_i8 = date_range('2013-01-01T00:00:00',
364-
'2016-01-01T23:59:59', freq=freq,
365-
tz='America/Lima')
366-
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
367-
368-
idx = date_range('2013-01-01T00:00:00+09:00',
369-
'2016-01-01T23:59:59+09:00', freq=freq)
370-
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
371-
freq=freq, tz=pytz.FixedOffset(540))
372-
tm.assert_index_equal(idx, expected)
373-
expected_i8 = date_range('2013-01-01T00:00:00',
374-
'2016-01-01T23:59:59', freq=freq,
375-
tz='Asia/Tokyo')
376-
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
354+
@pytest.mark.parametrize('freq', ['AS', 'W-SUN'])
355+
def test_constructor_datetime64_tzformat(self, freq):
356+
# see GH#6572: ISO 8601 format results in pytz.FixedOffset
357+
idx = date_range('2013-01-01T00:00:00-05:00',
358+
'2016-01-01T23:59:59-05:00', freq=freq)
359+
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
360+
freq=freq, tz=pytz.FixedOffset(-300))
361+
tm.assert_index_equal(idx, expected)
362+
# Unable to use `US/Eastern` because of DST
363+
expected_i8 = date_range('2013-01-01T00:00:00',
364+
'2016-01-01T23:59:59', freq=freq,
365+
tz='America/Lima')
366+
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
367+
368+
idx = date_range('2013-01-01T00:00:00+09:00',
369+
'2016-01-01T23:59:59+09:00', freq=freq)
370+
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
371+
freq=freq, tz=pytz.FixedOffset(540))
372+
tm.assert_index_equal(idx, expected)
373+
expected_i8 = date_range('2013-01-01T00:00:00',
374+
'2016-01-01T23:59:59', freq=freq,
375+
tz='Asia/Tokyo')
376+
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
377377

378378
# Non ISO 8601 format results in dateutil.tz.tzoffset
379-
for freq in ['AS', 'W-SUN']:
380-
idx = date_range('2013/1/1 0:00:00-5:00', '2016/1/1 23:59:59-5:00',
381-
freq=freq)
382-
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
383-
freq=freq, tz=pytz.FixedOffset(-300))
384-
tm.assert_index_equal(idx, expected)
385-
# Unable to use `US/Eastern` because of DST
386-
expected_i8 = date_range('2013-01-01T00:00:00',
387-
'2016-01-01T23:59:59', freq=freq,
388-
tz='America/Lima')
389-
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
390-
391-
idx = date_range('2013/1/1 0:00:00+9:00',
392-
'2016/1/1 23:59:59+09:00', freq=freq)
393-
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
394-
freq=freq, tz=pytz.FixedOffset(540))
395-
tm.assert_index_equal(idx, expected)
396-
expected_i8 = date_range('2013-01-01T00:00:00',
397-
'2016-01-01T23:59:59', freq=freq,
398-
tz='Asia/Tokyo')
399-
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
379+
idx = date_range('2013/1/1 0:00:00-5:00', '2016/1/1 23:59:59-5:00',
380+
freq=freq)
381+
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
382+
freq=freq, tz=pytz.FixedOffset(-300))
383+
tm.assert_index_equal(idx, expected)
384+
# Unable to use `US/Eastern` because of DST
385+
expected_i8 = date_range('2013-01-01T00:00:00',
386+
'2016-01-01T23:59:59', freq=freq,
387+
tz='America/Lima')
388+
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
389+
390+
idx = date_range('2013/1/1 0:00:00+9:00',
391+
'2016/1/1 23:59:59+09:00', freq=freq)
392+
expected = date_range('2013-01-01T00:00:00', '2016-01-01T23:59:59',
393+
freq=freq, tz=pytz.FixedOffset(540))
394+
tm.assert_index_equal(idx, expected)
395+
expected_i8 = date_range('2013-01-01T00:00:00',
396+
'2016-01-01T23:59:59', freq=freq,
397+
tz='Asia/Tokyo')
398+
tm.assert_numpy_array_equal(idx.asi8, expected_i8.asi8)
400399

401400
def test_constructor_dtype(self):
402401

@@ -451,36 +450,35 @@ def test_dti_constructor_preserve_dti_freq(self):
451450
rng2 = DatetimeIndex(rng)
452451
assert rng.freq == rng2.freq
453452

454-
def test_dti_constructor_years_only(self):
453+
@pytest.mark.parametrize('tz', [None, 'UTC', 'Asia/Tokyo',
454+
'dateutil/US/Pacific'])
455+
def test_dti_constructor_years_only(self, tz):
455456
# GH 6961
456-
for tz in [None, 'UTC', 'Asia/Tokyo', 'dateutil/US/Pacific']:
457-
rng1 = date_range('2014', '2015', freq='M', tz=tz)
458-
expected1 = date_range('2014-01-31', '2014-12-31', freq='M', tz=tz)
457+
rng1 = date_range('2014', '2015', freq='M', tz=tz)
458+
expected1 = date_range('2014-01-31', '2014-12-31', freq='M', tz=tz)
459459

460-
rng2 = date_range('2014', '2015', freq='MS', tz=tz)
461-
expected2 = date_range('2014-01-01', '2015-01-01', freq='MS',
462-
tz=tz)
460+
rng2 = date_range('2014', '2015', freq='MS', tz=tz)
461+
expected2 = date_range('2014-01-01', '2015-01-01', freq='MS', tz=tz)
463462

464-
rng3 = date_range('2014', '2020', freq='A', tz=tz)
465-
expected3 = date_range('2014-12-31', '2019-12-31', freq='A', tz=tz)
463+
rng3 = date_range('2014', '2020', freq='A', tz=tz)
464+
expected3 = date_range('2014-12-31', '2019-12-31', freq='A', tz=tz)
466465

467-
rng4 = date_range('2014', '2020', freq='AS', tz=tz)
468-
expected4 = date_range('2014-01-01', '2020-01-01', freq='AS',
469-
tz=tz)
466+
rng4 = date_range('2014', '2020', freq='AS', tz=tz)
467+
expected4 = date_range('2014-01-01', '2020-01-01', freq='AS', tz=tz)
470468

471-
for rng, expected in [(rng1, expected1), (rng2, expected2),
472-
(rng3, expected3), (rng4, expected4)]:
473-
tm.assert_index_equal(rng, expected)
469+
for rng, expected in [(rng1, expected1), (rng2, expected2),
470+
(rng3, expected3), (rng4, expected4)]:
471+
tm.assert_index_equal(rng, expected)
474472

475-
def test_dti_constructor_small_int(self):
473+
@pytest.mark.parametrize('dtype', [np.int64, np.int32, np.int16, np.int8])
474+
def test_dti_constructor_small_int(self, dtype):
476475
# GH 13721
477476
exp = DatetimeIndex(['1970-01-01 00:00:00.00000000',
478477
'1970-01-01 00:00:00.00000001',
479478
'1970-01-01 00:00:00.00000002'])
480479

481-
for dtype in [np.int64, np.int32, np.int16, np.int8]:
482-
arr = np.array([0, 10, 20], dtype=dtype)
483-
tm.assert_index_equal(DatetimeIndex(arr), exp)
480+
arr = np.array([0, 10, 20], dtype=dtype)
481+
tm.assert_index_equal(DatetimeIndex(arr), exp)
484482

485483
def test_ctor_str_intraday(self):
486484
rng = DatetimeIndex(['1-1-2000 00:00:01'])
@@ -499,7 +497,7 @@ def test_index_cast_datetime64_other_units(self):
499497
assert (idx.values == conversion.ensure_datetime64ns(arr)).all()
500498

501499
def test_constructor_int64_nocopy(self):
502-
# #1624
500+
# GH#1624
503501
arr = np.arange(1000, dtype=np.int64)
504502
index = DatetimeIndex(arr)
505503

@@ -512,19 +510,17 @@ def test_constructor_int64_nocopy(self):
512510
arr[50:100] = -1
513511
assert (index.asi8[50:100] != -1).all()
514512

515-
def test_from_freq_recreate_from_data(self):
516-
freqs = ['M', 'Q', 'A', 'D', 'B', 'BH', 'T', 'S', 'L', 'U', 'H', 'N',
517-
'C']
518-
519-
for f in freqs:
520-
org = DatetimeIndex(start='2001/02/01 09:00', freq=f, periods=1)
521-
idx = DatetimeIndex(org, freq=f)
522-
tm.assert_index_equal(idx, org)
523-
524-
org = DatetimeIndex(start='2001/02/01 09:00', freq=f,
525-
tz='US/Pacific', periods=1)
526-
idx = DatetimeIndex(org, freq=f, tz='US/Pacific')
527-
tm.assert_index_equal(idx, org)
513+
@pytest.mark.parametrize('freq', ['M', 'Q', 'A', 'D', 'B', 'BH',
514+
'T', 'S', 'L', 'U', 'H', 'N', 'C'])
515+
def test_from_freq_recreate_from_data(self, freq):
516+
org = DatetimeIndex(start='2001/02/01 09:00', freq=freq, periods=1)
517+
idx = DatetimeIndex(org, freq=freq)
518+
tm.assert_index_equal(idx, org)
519+
520+
org = DatetimeIndex(start='2001/02/01 09:00', freq=freq,
521+
tz='US/Pacific', periods=1)
522+
idx = DatetimeIndex(org, freq=freq, tz='US/Pacific')
523+
tm.assert_index_equal(idx, org)
528524

529525
def test_datetimeindex_constructor_misc(self):
530526
arr = ['1/1/2005', '1/2/2005', 'Jn 3, 2005', '2005-01-04']

pandas/tests/indexes/datetimes/test_date_range.py

+40-43
Original file line numberDiff line numberDiff line change
@@ -222,16 +222,13 @@ def test_range_misspecified(self):
222222
with tm.assert_raises_regex(ValueError, msg):
223223
date_range()
224224

225-
def test_compat_replace(self):
225+
@pytest.mark.parametrize('f', [compat.long, int])
226+
def test_compat_replace(self, f):
226227
# https://github.com/statsmodels/statsmodels/issues/3349
227228
# replace should take ints/longs for compat
228-
229-
for f in [compat.long, int]:
230-
result = date_range(Timestamp('1960-04-01 00:00:00',
231-
freq='QS-JAN'),
232-
periods=f(76),
233-
freq='QS-JAN')
234-
assert len(result) == 76
229+
result = date_range(Timestamp('1960-04-01 00:00:00', freq='QS-JAN'),
230+
periods=f(76), freq='QS-JAN')
231+
assert len(result) == 76
235232

236233
def test_catch_infinite_loop(self):
237234
offset = offsets.DateOffset(minute=5)
@@ -484,24 +481,24 @@ def test_range_tz_dateutil(self):
484481
assert dr[0] == start
485482
assert dr[2] == end
486483

487-
def test_range_closed(self):
484+
@pytest.mark.parametrize('freq', ["1D", "3D", "2M", "7W", "3H", "A"])
485+
def test_range_closed(self, freq):
488486
begin = datetime(2011, 1, 1)
489487
end = datetime(2014, 1, 1)
490488

491-
for freq in ["1D", "3D", "2M", "7W", "3H", "A"]:
492-
closed = date_range(begin, end, closed=None, freq=freq)
493-
left = date_range(begin, end, closed="left", freq=freq)
494-
right = date_range(begin, end, closed="right", freq=freq)
495-
expected_left = left
496-
expected_right = right
489+
closed = date_range(begin, end, closed=None, freq=freq)
490+
left = date_range(begin, end, closed="left", freq=freq)
491+
right = date_range(begin, end, closed="right", freq=freq)
492+
expected_left = left
493+
expected_right = right
497494

498-
if end == closed[-1]:
499-
expected_left = closed[:-1]
500-
if begin == closed[0]:
501-
expected_right = closed[1:]
495+
if end == closed[-1]:
496+
expected_left = closed[:-1]
497+
if begin == closed[0]:
498+
expected_right = closed[1:]
502499

503-
tm.assert_index_equal(expected_left, left)
504-
tm.assert_index_equal(expected_right, right)
500+
tm.assert_index_equal(expected_left, left)
501+
tm.assert_index_equal(expected_right, right)
505502

506503
def test_range_closed_with_tz_aware_start_end(self):
507504
# GH12409, GH12684
@@ -546,28 +543,28 @@ def test_range_closed_with_tz_aware_start_end(self):
546543
tm.assert_index_equal(expected_left, left)
547544
tm.assert_index_equal(expected_right, right)
548545

549-
def test_range_closed_boundary(self):
550-
# GH 11804
551-
for closed in ['right', 'left', None]:
552-
right_boundary = date_range('2015-09-12', '2015-12-01',
553-
freq='QS-MAR', closed=closed)
554-
left_boundary = date_range('2015-09-01', '2015-09-12',
555-
freq='QS-MAR', closed=closed)
556-
both_boundary = date_range('2015-09-01', '2015-12-01',
557-
freq='QS-MAR', closed=closed)
558-
expected_right = expected_left = expected_both = both_boundary
559-
560-
if closed == 'right':
561-
expected_left = both_boundary[1:]
562-
if closed == 'left':
563-
expected_right = both_boundary[:-1]
564-
if closed is None:
565-
expected_right = both_boundary[1:]
566-
expected_left = both_boundary[:-1]
567-
568-
tm.assert_index_equal(right_boundary, expected_right)
569-
tm.assert_index_equal(left_boundary, expected_left)
570-
tm.assert_index_equal(both_boundary, expected_both)
546+
@pytest.mark.parametrize('closed', ['right', 'left', None])
547+
def test_range_closed_boundary(self, closed):
548+
# GH#11804
549+
right_boundary = date_range('2015-09-12', '2015-12-01',
550+
freq='QS-MAR', closed=closed)
551+
left_boundary = date_range('2015-09-01', '2015-09-12',
552+
freq='QS-MAR', closed=closed)
553+
both_boundary = date_range('2015-09-01', '2015-12-01',
554+
freq='QS-MAR', closed=closed)
555+
expected_right = expected_left = expected_both = both_boundary
556+
557+
if closed == 'right':
558+
expected_left = both_boundary[1:]
559+
if closed == 'left':
560+
expected_right = both_boundary[:-1]
561+
if closed is None:
562+
expected_right = both_boundary[1:]
563+
expected_left = both_boundary[:-1]
564+
565+
tm.assert_index_equal(right_boundary, expected_right)
566+
tm.assert_index_equal(left_boundary, expected_left)
567+
tm.assert_index_equal(both_boundary, expected_both)
571568

572569
def test_years_only(self):
573570
# GH 6961

0 commit comments

Comments
 (0)