Skip to content

Commit 1cc2ee8

Browse files
committed
linear_map: Additional tests
1 parent 68afd00 commit 1cc2ee8

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
@@ -901,6 +901,37 @@ mod test {
901901
almost_filled
902902
}
903903

904+
#[test]
905+
fn remove() {
906+
let mut src = almost_filled_map();
907+
// key doesn't exist
908+
let k = 0;
909+
let r = src.remove(&k);
910+
assert!(r.is_none());
911+
912+
let k = 5;
913+
let v = 5;
914+
let r = src.remove(&k);
915+
assert_eq!(r, Some(v));
916+
let r = src.remove(&k);
917+
assert!(r.is_none());
918+
assert_eq!(src.len(), MAP_SLOTS - 2);
919+
}
920+
921+
#[test]
922+
fn replace() {
923+
let mut src = almost_filled_map();
924+
src.insert(10, 1000).unwrap();
925+
let v = src.get(&10).unwrap();
926+
assert_eq!(*v, 1000);
927+
928+
let mut src = almost_filled_map();
929+
let v = src.get_mut(&10).unwrap();
930+
*v = 500;
931+
let v = src.get(&10).unwrap();
932+
assert_eq!(*v, 500);
933+
}
934+
904935
#[test]
905936
fn entry_find() {
906937
let key = 0;
@@ -949,6 +980,31 @@ mod test {
949980
assert_eq!(value, *src.get(&key).unwrap());
950981
}
951982

983+
#[test]
984+
fn entry_vacant_full_insert() {
985+
let mut src = almost_filled_map();
986+
987+
// fill the map
988+
let key = MAP_SLOTS * 2;
989+
let value = key;
990+
src.insert(key, value).unwrap();
991+
assert_eq!(MAP_SLOTS, src.len());
992+
993+
let key = 0;
994+
let value = 0;
995+
let entry = src.entry(key);
996+
match entry {
997+
Entry::Occupied(_) => {
998+
panic!("Entry found when missing");
999+
}
1000+
Entry::Vacant(v) => {
1001+
// Value is returned since the map is full
1002+
assert_eq!(value, v.insert(value).unwrap_err());
1003+
}
1004+
};
1005+
assert!(src.get(&key).is_none());
1006+
}
1007+
9521008
#[test]
9531009
fn entry_occupied_insert() {
9541010
let key = 0;
@@ -986,6 +1042,7 @@ mod test {
9861042
}
9871043
};
9881044
assert_eq!(MAP_SLOTS - 1, src.len());
1045+
assert!(!src.contains_key(&key));
9891046
}
9901047

9911048
#[test]

0 commit comments

Comments
 (0)