@@ -255,11 +255,30 @@ def test_insert(self):
255
255
pytest .raises (ValueError , self .index .insert , 0 ,
256
256
Interval (2 , 3 , closed = 'left' ))
257
257
258
+ @pytest .mark .parametrize ('data' , [
259
+ interval_range (0 , periods = 10 ),
260
+ interval_range (1.7 , periods = 8 , freq = 2.5 ),
261
+ interval_range (Timestamp ('20170101' ), periods = 12 ),
262
+ interval_range (Timedelta ('1 day' ), periods = 6 ),
263
+ IntervalIndex .from_tuples ([('a' , 'd' ), ('e' , 'j' ), ('w' , 'z' )]),
264
+ IntervalIndex .from_tuples ([(1 , 2 ), ('a' , 'z' ), (3.14 , 6.28 )])])
265
+ def test_insert_na (self , data ):
258
266
# GH 18295
259
- expected = self .index_with_nan
260
- result = self .index .insert (1 , np .nan )
267
+ valid_na , invalid_na = np .nan , pd .NaT
268
+ if data .left ._na_value is pd .NaT :
269
+ valid_na , invalid_na = invalid_na , valid_na
270
+
271
+ # valid insertion
272
+ expected = IntervalIndex ([data [0 ], np .nan ]).append (data [1 :])
273
+ result = data .insert (1 , valid_na )
261
274
tm .assert_index_equal (result , expected )
262
275
276
+ # invalid insertion
277
+ msg = ('cannot insert with incompatible NA value: got {invalid}, '
278
+ 'expected {valid}' ).format (invalid = invalid_na , valid = valid_na )
279
+ with tm .assert_raises_regex (TypeError , msg ):
280
+ data .insert (1 , invalid_na )
281
+
263
282
def test_take (self ):
264
283
actual = self .index .take ([0 , 1 ])
265
284
assert self .index .equals (actual )
0 commit comments