Skip to content

Commit cf0bad5

Browse files
mkjsgued
authored andcommitted
linear_map: Additional tests
1 parent e6c1fe0 commit cf0bad5

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
@@ -929,6 +929,37 @@ mod test {
929929
almost_filled
930930
}
931931

932+
#[test]
933+
fn remove() {
934+
let mut src = almost_filled_map();
935+
// key doesn't exist
936+
let k = 0;
937+
let r = src.remove(&k);
938+
assert!(r.is_none());
939+
940+
let k = 5;
941+
let v = 5;
942+
let r = src.remove(&k);
943+
assert_eq!(r, Some(v));
944+
let r = src.remove(&k);
945+
assert!(r.is_none());
946+
assert_eq!(src.len(), MAP_SLOTS - 2);
947+
}
948+
949+
#[test]
950+
fn replace() {
951+
let mut src = almost_filled_map();
952+
src.insert(10, 1000).unwrap();
953+
let v = src.get(&10).unwrap();
954+
assert_eq!(*v, 1000);
955+
956+
let mut src = almost_filled_map();
957+
let v = src.get_mut(&10).unwrap();
958+
*v = 500;
959+
let v = src.get(&10).unwrap();
960+
assert_eq!(*v, 500);
961+
}
962+
932963
#[test]
933964
fn entry_find() {
934965
let key = 0;
@@ -977,6 +1008,31 @@ mod test {
9771008
assert_eq!(value, *src.get(&key).unwrap());
9781009
}
9791010

1011+
#[test]
1012+
fn entry_vacant_full_insert() {
1013+
let mut src = almost_filled_map();
1014+
1015+
// fill the map
1016+
let key = MAP_SLOTS * 2;
1017+
let value = key;
1018+
src.insert(key, value).unwrap();
1019+
assert_eq!(MAP_SLOTS, src.len());
1020+
1021+
let key = 0;
1022+
let value = 0;
1023+
let entry = src.entry(key);
1024+
match entry {
1025+
Entry::Occupied(_) => {
1026+
panic!("Entry found when missing");
1027+
}
1028+
Entry::Vacant(v) => {
1029+
// Value is returned since the map is full
1030+
assert_eq!(value, v.insert(value).unwrap_err());
1031+
}
1032+
};
1033+
assert!(src.get(&key).is_none());
1034+
}
1035+
9801036
#[test]
9811037
fn entry_occupied_insert() {
9821038
let key = 0;
@@ -1014,6 +1070,7 @@ mod test {
10141070
}
10151071
};
10161072
assert_eq!(MAP_SLOTS - 1, src.len());
1073+
assert!(!src.contains_key(&key));
10171074
}
10181075

10191076
#[test]

0 commit comments

Comments
 (0)