Skip to content

Commit 801b9ab

Browse files
committed
linear_map: Additional tests
1 parent df6f699 commit 801b9ab

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

src/linear_map.rs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,37 @@ mod test {
895895
almost_filled
896896
}
897897

898+
#[test]
899+
fn remove() {
900+
let mut src = almost_filled_map();
901+
// key doesn't exist
902+
let k = 0;
903+
let r = src.remove(&k);
904+
assert!(r.is_none());
905+
906+
let k = 5;
907+
let v = 5;
908+
let r = src.remove(&k);
909+
assert_eq!(r, Some(v));
910+
let r = src.remove(&k);
911+
assert!(r.is_none());
912+
assert_eq!(src.len(), MAP_SLOTS - 2);
913+
}
914+
915+
#[test]
916+
fn replace() {
917+
let mut src = almost_filled_map();
918+
src.insert(10, 1000).unwrap();
919+
let v = src.get(&10).unwrap();
920+
assert_eq!(*v, 1000);
921+
922+
let mut src = almost_filled_map();
923+
let v = src.get_mut(&10).unwrap();
924+
*v = 500;
925+
let v = src.get(&10).unwrap();
926+
assert_eq!(*v, 500);
927+
}
928+
898929
#[test]
899930
fn entry_find() {
900931
let key = 0;
@@ -943,6 +974,31 @@ mod test {
943974
assert_eq!(value, *src.get(&key).unwrap());
944975
}
945976

977+
#[test]
978+
fn entry_vacant_full_insert() {
979+
let mut src = almost_filled_map();
980+
981+
// fill the map
982+
let key = MAP_SLOTS * 2;
983+
let value = key;
984+
src.insert(key, value).unwrap();
985+
assert_eq!(MAP_SLOTS, src.len());
986+
987+
let key = 0;
988+
let value = 0;
989+
let entry = src.entry(key);
990+
match entry {
991+
Entry::Occupied(_) => {
992+
panic!("Entry found when missing");
993+
}
994+
Entry::Vacant(v) => {
995+
// Value is returned since the map is full
996+
assert_eq!(value, v.insert(value).unwrap_err());
997+
}
998+
};
999+
assert!(src.get(&key).is_none());
1000+
}
1001+
9461002
#[test]
9471003
fn entry_occupied_insert() {
9481004
let key = 0;
@@ -980,6 +1036,7 @@ mod test {
9801036
}
9811037
};
9821038
assert_eq!(MAP_SLOTS - 1, src.len());
1039+
assert!(!src.contains_key(&key));
9831040
}
9841041

9851042
#[test]

0 commit comments

Comments
 (0)