📄 testdoubleorderedmap.java
字号:
m2.put("1", "foo");
m2.put("2", "foo");
try {
m = new DoubleOrderedMap(m2);
fail("Should have caught IllegalArgumentException");
} catch (IllegalArgumentException ignored) {}
// reject null values
m2.put("2", null);
try {
m = new DoubleOrderedMap(m2);
fail("Should have caught NullPointerException");
} catch (NullPointerException ignored) {}
// reject non-Comparable values
m2.put("2", new Object());
try {
m = new DoubleOrderedMap(m2);
fail("Should have caught ClassCastException");
} catch (ClassCastException ignored) {}
// reject incompatible values
m2.put("2", new Integer(2));
try {
m = new DoubleOrderedMap(m2);
fail("Should have caught ClassCastException");
} catch (ClassCastException ignored) {}
// reject incompatible keys
m2.remove("2");
m2.put(new Integer(2), "bad key");
try {
m = new DoubleOrderedMap(m2);
fail("Should have caught ClassCastException");
} catch (ClassCastException ignored) {}
// reject non-Comparable keys
m2.clear();
m2.put("1", "foo");
m2.put(new Object(), "bad key");
try {
m = new DoubleOrderedMap(m2);
fail("Should have caught ClassCastException");
} catch (ClassCastException ignored) {}
}
/**
* test getKeyForValue() method
*/
public void testGetKeyForValue() {
DoubleOrderedMap m = (DoubleOrderedMap) makeMap();
try {
m.getKeyForValue(new Object());
fail("should have caught ClassCastException");
} catch (ClassCastException ignored) {}
try {
m.getKeyForValue(null);
fail("should have caught NullPointerException");
} catch (NullPointerException ignored) {}
assertNull(m.getKeyForValue("foo"));
LocalTestNode nodes[] = makeLocalNodes();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
assertSame(m.getKeyForValue(nodes[k]), nodes[k].getKey());
}
assertNull(m.getKeyForValue(new LocalTestNode(-1)));
try {
m.getKeyForValue("foo");
fail("Should have caught ClassCastException");
} catch (ClassCastException ignored) {}
for (int k = 0; k < nodes.length; k++) {
assertNotNull(m.getKeyForValue(nodes[k]));
m.remove(nodes[k].getKey());
assertNull(m.getKeyForValue(nodes[k]));
}
}
/**
* test removeValue() method
*/
public void testRemoveValue() {
DoubleOrderedMap m = (DoubleOrderedMap) makeMap();
LocalTestNode nodes[] = makeLocalNodes();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
try {
m.removeValue(null);
fail("should have caught NullPointerException");
} catch (NullPointerException ignored) {}
try {
m.removeValue(new Object());
fail("should have caught ClassCastException");
} catch (ClassCastException ignored) {}
assertNull(m.remove(new Integer(-1)));
try {
m.removeValue("foo");
fail("should have caught ClassCastException");
} catch (ClassCastException ignored) {}
for (int k = 0; k < nodes.length; k += 2) {
assertNotNull(m.getKeyForValue(nodes[k]));
assertSame(nodes[k].getKey(), m.removeValue(nodes[k]));
assertNull(m.removeValue(nodes[k]));
assertNull(m.getKeyForValue(nodes[k]));
}
for (int k = 1; k < nodes.length; k += 2) {
assertNotNull(m.getKeyForValue(nodes[k]));
assertSame(nodes[k].getKey(), m.removeValue(nodes[k]));
assertNull(m.removeValue(nodes[k]));
assertNull(m.getKeyForValue(nodes[k]));
}
assertTrue(m.isEmpty());
}
/**
* test entrySetByValue() method
*/
public void testEntrySetByValue() {
testEntrySetByValue((DoubleOrderedMap) makeMap());
DoubleOrderedMap m = (DoubleOrderedMap) makeMap();
LocalTestNode nodes[] = makeLocalNodes();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
testEntrySetByValue(m);
m = (DoubleOrderedMap) makeMap();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
try {
((Map.Entry) m.entrySetByValue().iterator().next())
.setValue(new LocalTestNode(-1));
fail("Should have caught UnsupportedOperationException");
} catch (UnsupportedOperationException ignored) {}
int count = m.size();
for (Iterator iter = m.entrySetByValue().iterator();
iter.hasNext(); ) {
iter.next();
iter.remove();
--count;
assertEquals(count, m.size());
}
assertTrue(m.isEmpty());
m = (DoubleOrderedMap) makeMap();
Collection c1 = new LinkedList();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
c1.add(nodes[k].getKey());
}
try {
m.entrySetByValue().addAll(c1);
fail("should have caught exception of addAll()");
} catch (UnsupportedOperationException ignored) {}
m = (DoubleOrderedMap) makeMap();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
m.entrySetByValue().clear();
assertEquals(0, m.size());
m = (DoubleOrderedMap) makeMap();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
int x = 0;
for (Iterator iter = m.entrySetByValue().iterator();
iter.hasNext(); ) {
Map.Entry entry = (Map.Entry) iter.next();
assertSame(entry.getKey(), nodes[x].getKey());
assertSame(entry.getValue(), nodes[x]);
x++;
}
}
/**
* test keySetByValue() method
*/
public void testKeySetByValue() {
testKeySetByValue((DoubleOrderedMap) makeMap());
DoubleOrderedMap m = (DoubleOrderedMap) makeMap();
LocalTestNode nodes[] = makeLocalNodes();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
testKeySetByValue(m);
m = (DoubleOrderedMap) makeMap();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
int count = m.size();
for (Iterator iter = m.keySetByValue().iterator(); iter.hasNext(); )
{
iter.next();
iter.remove();
--count;
assertEquals(count, m.size());
}
assertTrue(m.isEmpty());
m = (DoubleOrderedMap) makeMap();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
Set s = m.keySetByValue();
try {
s.remove(null);
fail("should have caught NullPointerException");
} catch (NullPointerException ignored) {}
try {
s.remove(new Object());
fail("should have caught ClassCastException");
} catch (ClassCastException ignored) {}
for (int k = 0; k < nodes.length; k++) {
Comparable key = nodes[k].getKey();
assertTrue(s.remove(key));
assertTrue(!s.contains(key));
assertTrue(!m.containsKey(key));
assertTrue(!m.containsValue(nodes[k]));
}
assertTrue(m.isEmpty());
m = (DoubleOrderedMap) makeMap();
Collection c1 = new LinkedList();
Collection c2 = new LinkedList();
c2.add(new Integer(-99));
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
c1.add(nodes[k].getKey());
c2.add(nodes[k].getKey());
}
assertTrue(m.keySetByValue().containsAll(c1));
assertTrue(!m.keySetByValue().containsAll(c2));
m = (DoubleOrderedMap) makeMap();
c1 = new LinkedList();
c1.add(new Integer(-55));
try {
m.keySetByValue().addAll(c1);
fail("should have caught exception of addAll()");
} catch (UnsupportedOperationException ignored) {}
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
c1.add(nodes[k].getKey());
}
assertTrue(!m.keySetByValue().retainAll(c1));
assertEquals(nodes.length, m.size());
m = (DoubleOrderedMap) makeMap();
c1 = new LinkedList();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
if (k % 2 == 1) {
c1.add(nodes[k].getKey());
}
}
assertTrue(m.keySetByValue().retainAll(c1));
assertEquals(nodes.length / 2, m.size());
m = (DoubleOrderedMap) makeMap();
c1 = new LinkedList();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
assertTrue(m.keySetByValue().retainAll(c1));
assertEquals(0, m.size());
m = (DoubleOrderedMap) makeMap();
c1 = new LinkedList();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
assertTrue(!m.keySetByValue().removeAll(c1));
assertEquals(nodes.length, m.size());
m = (DoubleOrderedMap) makeMap();
c1 = new LinkedList();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
if (k % 2 == 0) {
c1.add(nodes[k].getKey());
}
}
assertTrue(m.keySetByValue().removeAll(c1));
assertEquals(nodes.length / 2, m.size());
m = (DoubleOrderedMap) makeMap();
c1 = new LinkedList();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
c1.add(nodes[k].getKey());
}
assertTrue(m.keySetByValue().removeAll(c1));
assertEquals(0, m.size());
m = (DoubleOrderedMap) makeMap();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
m.keySetByValue().clear();
assertEquals(0, m.size());
}
/**
* test valuesByValue() method
*/
public void testValuesByValue() {
testValuesByValue((DoubleOrderedMap) makeMap());
DoubleOrderedMap m = (DoubleOrderedMap) makeMap();
LocalTestNode nodes[] = makeLocalNodes();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
testValuesByValue(m);
m = (DoubleOrderedMap) makeMap();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
int count = m.size();
for (Iterator iter = m.valuesByValue().iterator(); iter.hasNext(); )
{
iter.next();
iter.remove();
--count;
assertEquals(count, m.size());
}
assertTrue(m.isEmpty());
m = (DoubleOrderedMap) makeMap();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
}
count = m.size();
Collection s = m.valuesByValue();
for (int k = 0; k < count; k++) {
assertTrue(s.remove(nodes[k]));
assertTrue(!s.contains(nodes[k]));
assertTrue(!m.containsKey(nodes[k].getKey()));
assertTrue(!m.containsValue(nodes[k]));
}
assertTrue(m.isEmpty());
m = (DoubleOrderedMap) makeMap();
Collection c1 = new LinkedList();
Collection c2 = new LinkedList();
c2.add(new LocalTestNode(-123));
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
c1.add(nodes[k]);
c2.add(nodes[k]);
}
assertTrue(m.valuesByValue().containsAll(c1));
assertTrue(!m.valuesByValue().containsAll(c2));
m = (DoubleOrderedMap) makeMap();
c1 = new LinkedList();
for (int k = 0; k < nodes.length; k++) {
m.put(nodes[k].getKey(), nodes[k]);
c1.add(nodes[k]);
}
try {
m.valuesByValue().addAll(c1);
fail("should have caught exception of addAll()");
} catch (UnsupportedOperationException ignored) {}
m = (DoubleOrderedMap) makeMap();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -