@@ -92,3 +92,38 @@ pub fn remove_items_from_vec_by_indices<Item>(vec: &mut Vec<Item>, indices: &Has
9292 . map ( |( _, item) | item)
9393 . collect ( ) ;
9494}
95+
96+ #[ cfg( test) ]
97+ mod tests {
98+ use super :: remove_items_from_vec_by_indices;
99+ use maplit:: hashset;
100+ use pretty_assertions:: assert_eq;
101+ use std:: collections:: HashSet ;
102+
103+ #[ test]
104+ fn remove_nothing ( ) {
105+ let original = vec ! [ 31 , 54 , 22 , 81 , 67 , 45 , 52 , 20 , 85 , 66 , 27 , 84 ] ;
106+ let mut modified = original. clone ( ) ;
107+ remove_items_from_vec_by_indices ( & mut modified, & HashSet :: new ( ) ) ;
108+ assert_eq ! ( modified, original) ;
109+ }
110+
111+ #[ test]
112+ fn remove_single ( ) {
113+ let original = vec ! [ 31 , 54 , 22 , 81 , 67 , 45 , 52 , 20 , 85 , 66 , 27 , 84 ] ;
114+ let mut modified = original. clone ( ) ;
115+ remove_items_from_vec_by_indices ( & mut modified, & hashset ! { 3 } ) ;
116+ assert_eq ! ( & modified[ ..3 ] , & original[ ..3 ] ) ;
117+ assert_eq ! ( & modified[ 3 ..] , & original[ 4 ..] ) ;
118+ }
119+
120+ #[ test]
121+ fn remove_multiple ( ) {
122+ let original = vec ! [ 31 , 54 , 22 , 81 , 67 , 45 , 52 , 20 , 85 , 66 , 27 , 84 ] ;
123+ let mut modified = original. clone ( ) ;
124+ remove_items_from_vec_by_indices ( & mut modified, & hashset ! { 3 , 4 , 5 , 7 } ) ;
125+ assert_eq ! ( & modified[ ..3 ] , & original[ ..3 ] ) ;
126+ assert_eq ! ( & modified[ 3 ..4 ] , & original[ 6 ..7 ] ) ;
127+ assert_eq ! ( & modified[ 4 ..] , & original[ 8 ..] ) ;
128+ }
129+ }
0 commit comments