Skip to content

Commit 314ec7d

Browse files
committed
Add quick checks for insert_sorted_by
1 parent 3dbb123 commit 314ec7d

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

tests/quick.rs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,46 @@ quickcheck_limit! {
130130
true
131131
}
132132

133+
fn insert_sorted_by(insert: Vec<(u32, u32)>) -> bool {
134+
let mut hmap = HashMap::new();
135+
let mut map = IndexMap::new();
136+
let mut map2 = IndexMap::new();
137+
for &(key, value) in &insert {
138+
hmap.insert(key, value);
139+
map.insert_sorted_by(key, value, |other, _| key.cmp(other));
140+
match map2.entry(key) {
141+
Entry::Occupied(e) => *e.into_mut() = value,
142+
Entry::Vacant(e) => {
143+
e.insert_sorted_by(value, |other, _| key.cmp(other));
144+
}
145+
}
146+
}
147+
let hsorted = hmap.iter().sorted_by(|(key1, _), (key2, _)| key2.cmp(key1));
148+
itertools::assert_equal(hsorted, &map);
149+
itertools::assert_equal(&map, &map2);
150+
true
151+
}
152+
153+
fn insert_sorted_by_key(insert: Vec<(i32, u32)>) -> bool {
154+
let mut hmap = HashMap::new();
155+
let mut map = IndexMap::new();
156+
let mut map2 = IndexMap::new();
157+
for &(key, value) in &insert {
158+
hmap.insert(key, value);
159+
map.insert_sorted_by_key(key, value, |&k, _| (k.unsigned_abs(), k));
160+
match map2.entry(key) {
161+
Entry::Occupied(e) => *e.into_mut() = value,
162+
Entry::Vacant(e) => {
163+
e.insert_sorted_by_key(value, |&k, _| (k.unsigned_abs(), k));
164+
}
165+
}
166+
}
167+
let hsorted = hmap.iter().sorted_by_key(|(&k, _)| (k.unsigned_abs(), k));
168+
itertools::assert_equal(hsorted, &map);
169+
itertools::assert_equal(&map, &map2);
170+
true
171+
}
172+
133173
fn replace_index(insert: Vec<u8>, index: u8, new_key: u8) -> TestResult {
134174
if insert.is_empty() {
135175
return TestResult::discard();

0 commit comments

Comments
 (0)