@@ -255,11 +255,30 @@ def test_insert(self):
255255 pytest .raises (ValueError , self .index .insert , 0 ,
256256 Interval (2 , 3 , closed = 'left' ))
257257
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 ):
258266 # 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 )
261274 tm .assert_index_equal (result , expected )
262275
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+
263282 def test_take (self ):
264283 actual = self .index .take ([0 , 1 ])
265284 assert self .index .equals (actual )
0 commit comments