Skip to content

Commit 749d7d6

Browse files
committed
test: remove_items_from_vec_by_indices
1 parent c1976aa commit 749d7d6

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

src/app/deduplicate_arguments.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)