@@ -511,6 +511,48 @@ def test_delete(self, data):
511
511
expected = data ._concat_same_type ([data [[0 ]], data [[2 ]], data [4 :]])
512
512
self .assert_extension_array_equal (result , expected )
513
513
514
+ def test_insert (self , data ):
515
+ # insert at the beginning
516
+ result = data [1 :].insert (0 , data [0 ])
517
+ self .assert_extension_array_equal (result , data )
518
+
519
+ result = data [1 :].insert (- len (data [1 :]), data [0 ])
520
+ self .assert_extension_array_equal (result , data )
521
+
522
+ # insert at the middle
523
+ result = data [:- 1 ].insert (4 , data [- 1 ])
524
+
525
+ taker = np .arange (len (data ))
526
+ taker [5 :] = taker [4 :- 1 ]
527
+ taker [4 ] = len (data ) - 1
528
+ expected = data .take (taker )
529
+ self .assert_extension_array_equal (result , expected )
530
+
531
+ def test_insert_invalid (self , data , invalid_scalar ):
532
+ item = invalid_scalar
533
+
534
+ with pytest .raises ((TypeError , ValueError )):
535
+ data .insert (0 , item )
536
+
537
+ with pytest .raises ((TypeError , ValueError )):
538
+ data .insert (4 , item )
539
+
540
+ with pytest .raises ((TypeError , ValueError )):
541
+ data .insert (len (data ) - 1 , item )
542
+
543
+ def test_insert_invalid_loc (self , data ):
544
+ ub = len (data )
545
+
546
+ with pytest .raises (IndexError ):
547
+ data .insert (ub + 1 , data [0 ])
548
+
549
+ with pytest .raises (IndexError ):
550
+ data .insert (- ub - 1 , data [0 ])
551
+
552
+ with pytest .raises (TypeError ):
553
+ # we expect TypeError here instead of IndexError to match np.insert
554
+ data .insert (1.5 , data [0 ])
555
+
514
556
@pytest .mark .parametrize ("box" , [pd .array , pd .Series , pd .DataFrame ])
515
557
def test_equals (self , data , na_value , as_series , box ):
516
558
data2 = type (data )._from_sequence ([data [0 ]] * len (data ), dtype = data .dtype )
0 commit comments