Skip to content

Commit dbdfd29

Browse files
committed
Add test for removing entries via the entries() iterator
1 parent ac5ecb4 commit dbdfd29

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

tests/test.rs

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,65 @@ fn test_entries_replacing() {
8282
assert_eq!(map["a"], 20);
8383
}
8484

85+
#[test]
86+
fn test_entries_remove() {
87+
let mut map = LinkedHashMap::new();
88+
map.insert("a", 10);
89+
map.insert("b", 20);
90+
map.insert("c", 30);
91+
map.insert("d", 40);
92+
93+
// remove middle
94+
{
95+
let mut iter = map.entries();
96+
iter.next().unwrap();
97+
let b = iter.next().unwrap();
98+
assert_eq!(*b.key(), "b");
99+
assert_eq!(b.remove(), 20);
100+
assert_eq!(*iter.next().unwrap().key(), "c");
101+
}
102+
103+
assert_eq!(map.len(), 3);
104+
assert_eq!(map["a"], 10);
105+
assert_eq!(map["c"], 30);
106+
assert_eq!(map["d"], 40);
107+
108+
// remove first
109+
{
110+
let mut iter = map.entries();
111+
let a = iter.next().unwrap();
112+
assert_eq!(*a.key(), "a");
113+
assert_eq!(a.remove(), 10);
114+
}
115+
116+
assert_eq!(map.len(), 2);
117+
assert_eq!(map["c"], 30);
118+
assert_eq!(map["d"], 40);
119+
120+
// remove last
121+
{
122+
let mut iter = map.entries();
123+
iter.next().unwrap();
124+
let d = iter.next().unwrap();
125+
assert_eq!(*d.key(), "d");
126+
assert_eq!(d.remove(), 40);
127+
assert!(iter.next().is_none());
128+
}
129+
130+
assert_eq!(map.len(), 1);
131+
assert_eq!(map["c"], 30);
132+
133+
// remove only
134+
{
135+
let mut iter = map.entries();
136+
let c = iter.next().unwrap();
137+
assert_eq!(*c.key(), "c");
138+
assert_eq!(c.remove(), 30);
139+
}
140+
141+
assert!(map.is_empty());
142+
}
143+
85144
#[test]
86145
fn test_debug() {
87146
let mut map = LinkedHashMap::new();

0 commit comments

Comments
 (0)