@@ -580,7 +580,7 @@ fn test_drain_inclusive_out_of_bounds() {
580580}
581581
582582#[ test]
583- fn splice ( ) {
583+ fn test_splice ( ) {
584584 let mut v = vec ! [ 1 , 2 , 3 , 4 , 5 ] ;
585585 let a = [ 10 , 11 , 12 ] ;
586586 v. splice ( 2 ..4 , a. iter ( ) . cloned ( ) ) ;
@@ -589,6 +589,51 @@ fn splice() {
589589 assert_eq ! ( v, & [ 1 , 20 , 11 , 12 , 5 ] ) ;
590590}
591591
592+ #[ test]
593+ fn test_splice_inclusive_range ( ) {
594+ let mut v = vec ! [ 1 , 2 , 3 , 4 , 5 ] ;
595+ let a = [ 10 , 11 , 12 ] ;
596+ let t1: Vec < _ > = v. splice ( 2 ...3 , a. iter ( ) . cloned ( ) ) . collect ( ) ;
597+ assert_eq ! ( v, & [ 1 , 2 , 10 , 11 , 12 , 5 ] ) ;
598+ assert_eq ! ( t1, & [ 3 , 4 ] ) ;
599+ let t2: Vec < _ > = v. splice ( 1 ...2 , Some ( 20 ) ) . collect ( ) ;
600+ assert_eq ! ( v, & [ 1 , 20 , 11 , 12 , 5 ] ) ;
601+ assert_eq ! ( t2, & [ 2 , 10 ] ) ;
602+ }
603+
604+ #[ test]
605+ #[ should_panic]
606+ fn test_splice_out_of_bounds ( ) {
607+ let mut v = vec ! [ 1 , 2 , 3 , 4 , 5 ] ;
608+ let a = [ 10 , 11 , 12 ] ;
609+ v. splice ( 5 ..6 , a. iter ( ) . cloned ( ) ) ;
610+ }
611+
612+ #[ test]
613+ #[ should_panic]
614+ fn test_splice_inclusive_out_of_bounds ( ) {
615+ let mut v = vec ! [ 1 , 2 , 3 , 4 , 5 ] ;
616+ let a = [ 10 , 11 , 12 ] ;
617+ v. splice ( 5 ...5 , a. iter ( ) . cloned ( ) ) ;
618+ }
619+
620+ #[ test]
621+ fn test_splice_items_zero_sized ( ) {
622+ let mut vec = vec ! [ ( ) , ( ) , ( ) ] ;
623+ let vec2 = vec ! [ ] ;
624+ let t: Vec < _ > = vec. splice ( 1 ..2 , vec2. iter ( ) . cloned ( ) ) . collect ( ) ;
625+ assert_eq ! ( vec, & [ ( ) , ( ) ] ) ;
626+ assert_eq ! ( t, & [ ( ) ] ) ;
627+ }
628+
629+ #[ test]
630+ fn test_splice_unbounded ( ) {
631+ let mut vec = vec ! [ 1 , 2 , 3 , 4 , 5 ] ;
632+ let t: Vec < _ > = vec. splice ( .., None ) . collect ( ) ;
633+ assert_eq ! ( vec, & [ ] ) ;
634+ assert_eq ! ( t, & [ 1 , 2 , 3 , 4 , 5 ] ) ;
635+ }
636+
592637#[ test]
593638fn test_into_boxed_slice ( ) {
594639 let xs = vec ! [ 1 , 2 , 3 ] ;
0 commit comments