@@ -3151,6 +3151,39 @@ def test_nat(self):
31513151 self .assertIs (DatetimeIndex ([np .nan ])[0 ], pd .NaT )
31523152
31533153
3154+ def test_ufunc_coercions (self ):
3155+ idx = date_range ('2011-01-01' , periods = 3 , freq = '2D' , name = 'x' )
3156+
3157+ delta = np .timedelta64 (1 , 'D' )
3158+ for result in [idx + delta , np .add (idx , delta )]:
3159+ tm .assertIsInstance (result , DatetimeIndex )
3160+ exp = date_range ('2011-01-02' , periods = 3 , freq = '2D' , name = 'x' )
3161+ tm .assert_index_equal (result , exp )
3162+ self .assertEqual (result .freq , '2D' )
3163+
3164+ for result in [idx - delta , np .subtract (idx , delta )]:
3165+ tm .assertIsInstance (result , DatetimeIndex )
3166+ exp = date_range ('2010-12-31' , periods = 3 , freq = '2D' , name = 'x' )
3167+ tm .assert_index_equal (result , exp )
3168+ self .assertEqual (result .freq , '2D' )
3169+
3170+ delta = np .array ([np .timedelta64 (1 , 'D' ), np .timedelta64 (2 , 'D' ),
3171+ np .timedelta64 (3 , 'D' )])
3172+ for result in [idx + delta , np .add (idx , delta )]:
3173+ tm .assertIsInstance (result , DatetimeIndex )
3174+ exp = DatetimeIndex (['2011-01-02' , '2011-01-05' , '2011-01-08' ],
3175+ freq = '3D' , name = 'x' )
3176+ tm .assert_index_equal (result , exp )
3177+ self .assertEqual (result .freq , '3D' )
3178+
3179+ for result in [idx - delta , np .subtract (idx , delta )]:
3180+ tm .assertIsInstance (result , DatetimeIndex )
3181+ exp = DatetimeIndex (['2010-12-31' , '2011-01-01' , '2011-01-02' ],
3182+ freq = 'D' , name = 'x' )
3183+ tm .assert_index_equal (result , exp )
3184+ self .assertEqual (result .freq , 'D' )
3185+
3186+
31543187class TestPeriodIndex (DatetimeLike , tm .TestCase ):
31553188 _holder = PeriodIndex
31563189 _multiprocess_can_split_ = True
@@ -3306,7 +3339,7 @@ def test_pickle_compat_construction(self):
33063339 def test_ufunc_coercions (self ):
33073340 # normal ops are also tested in tseries/test_timedeltas.py
33083341 idx = TimedeltaIndex (['2H' , '4H' , '6H' , '8H' , '10H' ],
3309- freq = '2H' , name = 'x' )
3342+ freq = '2H' , name = 'x' )
33103343
33113344 for result in [idx * 2 , np .multiply (idx , 2 )]:
33123345 tm .assertIsInstance (result , TimedeltaIndex )
@@ -3323,7 +3356,7 @@ def test_ufunc_coercions(self):
33233356 self .assertEqual (result .freq , 'H' )
33243357
33253358 idx = TimedeltaIndex (['2H' , '4H' , '6H' , '8H' , '10H' ],
3326- freq = '2H' , name = 'x' )
3359+ freq = '2H' , name = 'x' )
33273360 for result in [ - idx , np .negative (idx )]:
33283361 tm .assertIsInstance (result , TimedeltaIndex )
33293362 exp = TimedeltaIndex (['-2H' , '-4H' , '-6H' , '-8H' , '-10H' ],
@@ -3332,7 +3365,7 @@ def test_ufunc_coercions(self):
33323365 self .assertEqual (result .freq , '-2H' )
33333366
33343367 idx = TimedeltaIndex (['-2H' , '-1H' , '0H' , '1H' , '2H' ],
3335- freq = 'H' , name = 'x' )
3368+ freq = 'H' , name = 'x' )
33363369 for result in [ abs (idx ), np .absolute (idx )]:
33373370 tm .assertIsInstance (result , TimedeltaIndex )
33383371 exp = TimedeltaIndex (['2H' , '1H' , '0H' , '1H' , '2H' ],
0 commit comments