Skip to content

Commit f938aa3

Browse files
committed
Fix entrySet.remove
1 parent 4d2cc4d commit f938aa3

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

core/src/main/java/vlsi/utils/CompactHashMapClass.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,10 @@ public boolean contains(Object o) {
312312

313313
@Override
314314
public boolean remove(Object o) {
315-
return map.remove(o) != null; // TODO: support null as "previous" value
315+
if (!(o instanceof Map.Entry))
316+
return false;
317+
Map.Entry<K, V> e = (Map.Entry<K, V>) o;
318+
return map.remove(e.getKey()) != null; // TODO: support "return true" when value was null
316319
}
317320

318321
@Override

core/src/test/java/vlsi/utils/CompactHashMapClassTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.testng.annotations.Test;
2525

2626
import java.io.*;
27+
import java.util.Map;
2728

2829
public class CompactHashMapClassTest {
2930
@BeforeMethod
@@ -227,4 +228,24 @@ public void deleteNullWorks() {
227228
Assert.assertEquals(map.size(), 0);
228229
Assert.assertEquals(map.get("k1"), null);
229230
}
231+
232+
@Test
233+
public void deleteFromEntrySet() {
234+
CompactHashMap<String, Object> map = new CompactHashMap<String, Object>();
235+
map.put("k1", "v1");
236+
Assert.assertTrue(map.entrySet().remove(new Map.Entry() {
237+
public Object getKey() {
238+
return "k1";
239+
}
240+
241+
public Object getValue() {
242+
return "v1";
243+
}
244+
245+
public Object setValue(Object value) {
246+
return null;
247+
}
248+
}), "entry was removed");
249+
Assert.assertEquals(map.size(), 0);
250+
}
230251
}

0 commit comments

Comments
 (0)