@@ -129,50 +129,91 @@ def test_dti_add_tdi(self, tz):
129
129
tdi = pd .timedelta_range ('0 days' , periods = 10 )
130
130
expected = pd .date_range ('2017-01-01' , periods = 10 , tz = tz )
131
131
132
+ # add with TimdeltaIndex
132
133
result = dti + tdi
133
134
tm .assert_index_equal (result , expected )
134
135
136
+ result = tdi + dti
137
+ tm .assert_index_equal (result , expected )
138
+
139
+ # add with timedelta64 array
135
140
result = dti + tdi .values
136
141
tm .assert_index_equal (result , expected )
137
142
143
+ result = tdi .values + dti
144
+ tm .assert_index_equal (result , expected )
145
+
138
146
def test_dti_iadd_tdi (self , tz ):
139
147
# GH 17558
148
+ dti = DatetimeIndex ([Timestamp ('2017-01-01' , tz = tz )] * 10 )
140
149
tdi = pd .timedelta_range ('0 days' , periods = 10 )
141
150
expected = pd .date_range ('2017-01-01' , periods = 10 , tz = tz )
142
151
152
+ # iadd with TimdeltaIndex
143
153
result = DatetimeIndex ([Timestamp ('2017-01-01' , tz = tz )] * 10 )
144
154
result += tdi
145
155
tm .assert_index_equal (result , expected )
146
156
157
+ result = pd .timedelta_range ('0 days' , periods = 10 )
158
+ result += dti
159
+ tm .assert_index_equal (result , expected )
160
+
161
+ # iadd with timedelta64 array
147
162
result = DatetimeIndex ([Timestamp ('2017-01-01' , tz = tz )] * 10 )
148
163
result += tdi .values
149
164
tm .assert_index_equal (result , expected )
150
165
166
+ result = pd .timedelta_range ('0 days' , periods = 10 )
167
+ result += dti
168
+ tm .assert_index_equal (result , expected )
169
+
151
170
def test_dti_sub_tdi (self , tz ):
152
171
# GH 17558
153
172
dti = DatetimeIndex ([Timestamp ('2017-01-01' , tz = tz )] * 10 )
154
173
tdi = pd .timedelta_range ('0 days' , periods = 10 )
155
174
expected = pd .date_range ('2017-01-01' , periods = 10 , tz = tz , freq = '-1D' )
156
175
176
+ # sub with TimedeltaIndex
157
177
result = dti - tdi
158
178
tm .assert_index_equal (result , expected )
159
179
180
+ msg = 'cannot subtract TimedeltaIndex and DatetimeIndex'
181
+ with tm .assert_raises_regex (TypeError , msg ):
182
+ tdi - dti
183
+
184
+ # sub with timedelta64 array
160
185
result = dti - tdi .values
161
186
tm .assert_index_equal (result , expected )
162
187
188
+ msg = 'cannot perform __neg__ with this index type:'
189
+ with tm .assert_raises_regex (TypeError , msg ):
190
+ tdi .values - dti
191
+
163
192
def test_dti_isub_tdi (self , tz ):
164
193
# GH 17558
194
+ dti = DatetimeIndex ([Timestamp ('2017-01-01' , tz = tz )] * 10 )
165
195
tdi = pd .timedelta_range ('0 days' , periods = 10 )
166
196
expected = pd .date_range ('2017-01-01' , periods = 10 , tz = tz , freq = '-1D' )
167
197
198
+ # isub with TimedeltaIndex
168
199
result = DatetimeIndex ([Timestamp ('2017-01-01' , tz = tz )] * 10 )
169
200
result -= tdi
170
201
tm .assert_index_equal (result , expected )
171
202
203
+ msg = 'cannot subtract TimedeltaIndex and DatetimeIndex'
204
+ with tm .assert_raises_regex (TypeError , msg ):
205
+ tdi -= dti
206
+
207
+ # isub with timedelta64 array
172
208
result = DatetimeIndex ([Timestamp ('2017-01-01' , tz = tz )] * 10 )
173
209
result -= tdi .values
174
210
tm .assert_index_equal (result , expected )
175
211
212
+ msg = '|' .join (['cannot perform __neg__ with this index type:' ,
213
+ 'ufunc subtract cannot use operands with types' ])
214
+ with tm .assert_raises_regex (TypeError , msg ):
215
+ tdi .values -= dti
216
+
176
217
# -------------------------------------------------------------
177
218
# Binary Operations DatetimeIndex and datetime-like
178
219
# TODO: A couple other tests belong in this section. Move them in
0 commit comments