test/java/util/LinkedHashMap/Basic.java
Print this page
rev 8940 : 8029795: LinkedHashMap.getOrDefault() doesn't update access order.
Reviewed-by: duke
@@ -21,11 +21,11 @@
* questions.
*/
/**
* @test
- * @bug 4245809
+ * @bug 4245809 8029795
* @summary Basic test for LinkedHashMap. (Based on MapBash)
*/
import java.util.*;
import java.io.*;
@@ -173,11 +173,11 @@
}
if (!new ArrayList(m2.keySet()).equals(l))
throw new Exception("Clone: altered by read.");
// Test ordering properties with access order
- m = new LinkedHashMap(1000, .75f, true);
+ m = new LinkedHashMap(2*mapSize, .75f, true);
for (int i=0; i<mapSize; i++) {
Integer x = new Integer(i);
m.put(x, x);
}
if (!new ArrayList(m.keySet()).equals(l))
@@ -190,10 +190,34 @@
}
if (!new ArrayList(m.keySet()).equals(l2))
throw new Exception("Insert order not properly altered by read.");
for (int i=0; i<mapSize; i++) {
+ Integer x = (Integer) l2.get(i);
+ if (!m.getOrDefault(x, new Integer(i + 1000)).equals(x))
+ throw new Exception("Wrong value: "+i+", "+m.get(x)+", "+x);
+ }
+ if (!new ArrayList(m.keySet()).equals(l2))
+ throw new Exception("Insert order not properly altered by read.");
+
+ for (int i=0; i<mapSize; i++) {
+ Integer x = (Integer) l2.get(i);
+ if (!m.replace(x, x).equals(x))
+ throw new Exception("Wrong value: "+i+", "+m.get(x)+", "+x);
+ }
+ if (!new ArrayList(m.keySet()).equals(l2))
+ throw new Exception("Insert order not properly altered by replace.");
+
+ for (int i=0; i<mapSize; i++) {
+ Integer x = (Integer) l2.get(i);
+ if (!m.replace(x, x, new Integer(i)))
+ throw new Exception("Wrong value: "+i+", "+m.get(x)+", "+x);
+ }
+ if (!new ArrayList(m.keySet()).equals(l2))
+ throw new Exception("Insert order not properly altered by replace.");
+
+ for (int i=0; i<mapSize; i++) {
Integer x = new Integer(i);
m.put(x, x);
}
if (!new ArrayList(m.keySet()).equals(l))
throw new Exception("Insertion order not altered by reinsert.");