📄 collectiontest.java
字号:
} }); } void appendAll() throws Exception { writeRunner.run(new TransactionWorker() { public void doWork() throws Exception { assertTrue(imap.isEmpty()); TestKeyAssigner keyAssigner = testStore.getKeyAssigner(); if (keyAssigner != null) { keyAssigner.reset(); } for (int i = beginKey; i <= endKey; i += 1) { boolean useList = (i & 1) == 0; Long key = makeKey(i); Object val = makeVal(i); assertNull(imap.get(key)); if (keyAssigner != null) { if (useList && ilist != null) { assertEquals(i - 1, ilist.append(val)); } else { assertEquals(key, imap.append(val)); } assertEquals(val, imap.get(key)); } else { Long recnoKey; if (useList && ilist != null) { recnoKey = new Long(ilist.append(val) + 1); } else { recnoKey = (Long) imap.append(val); } assertNotNull(recnoKey); Object recnoVal; if (isEntityBinding) { recnoVal = makeEntity(recnoKey.intValue(), i); } else { recnoVal = val; } assertEquals(recnoVal, imap.get(recnoKey)); } } } }); } void updateAll() throws Exception { writeRunner.run(new TransactionWorker() { public void doWork() throws Exception { for (int i = beginKey; i <= endKey; i += 1) { Long key = makeKey(i); Object val = makeVal(i); if (!imap.areDuplicatesAllowed()) { assertEquals(val, imap.put(key, val)); } if (isEntityBinding) { assertTrue(!imap.values().add(val)); } checkDupsSize(1, imap.duplicates(key)); if (ilist != null) { int idx = i - 1; assertEquals(val, ilist.set(idx, val)); } } updateIter(map.entrySet()); updateIter(map.values()); if (beginKey <= endKey) { ListIterator iter = (ListIterator) iterator(map.keySet()); try { assertNotNull(iter.next()); iter.set(makeKey(beginKey)); fail(); } catch (UnsupportedOperationException e) { } finally { StoredIterator.close(iter); } } if (list != null) { updateIter(list); } } }); } void updateIter(final Collection coll) throws Exception { writeIterRunner.run(new TransactionWorker() { public void doWork() throws Exception { ListIterator iter = (ListIterator) iterator(coll); try { for (int i = beginKey; i <= endKey; i += 1) { assertTrue(iter.hasNext()); Object obj = iter.next(); if (index != null) { try { setValuePlusOne(iter, obj); fail(); } catch (UnsupportedOperationException e) {} } else if (((StoredCollection) coll).areDuplicatesOrdered()) { try { setValuePlusOne(iter, obj); fail(); } catch (RuntimeException e) { Exception e2 = ExceptionUnwrapper.unwrap(e); assertTrue(e2.getClass().getName(), e2 instanceof IllegalArgumentException || e2 instanceof DatabaseException); } } else { setValuePlusOne(iter, obj); } } assertTrue(!iter.hasNext()); } finally { StoredIterator.close(iter); } } }); } void setValuePlusOne(ListIterator iter, Object obj) { if (obj instanceof Map.Entry) { Map.Entry entry = (Map.Entry) obj; Long key = (Long) entry.getKey(); Object oldVal = entry.getValue(); Object val = makeVal(key.intValue() + 1); if (isEntityBinding) { try { // must fail on attempt to change the key via an entity entry.setValue(val); fail(); } catch (IllegalArgumentException e) {} val = makeEntity(key.intValue(), key.intValue() + 1); } entry.setValue(val); assertEquals(val, entry.getValue()); assertEquals(val, map.get(key)); assertTrue(map.duplicates(key).contains(val)); checkDupsSize(1, map.duplicates(key)); entry.setValue(oldVal); assertEquals(oldVal, entry.getValue()); assertEquals(oldVal, map.get(key)); assertTrue(map.duplicates(key).contains(oldVal)); checkDupsSize(1, map.duplicates(key)); } else { Object oldVal = obj; Long key = makeKey(intVal(obj)); Object val = makeVal(key.intValue() + 1); if (isEntityBinding) { try { // must fail on attempt to change the key via an entity iter.set(val); fail(); } catch (IllegalArgumentException e) {} val = makeEntity(key.intValue(), key.intValue() + 1); } iter.set(val); assertEquals(val, map.get(key)); assertTrue(map.duplicates(key).contains(val)); checkDupsSize(1, map.duplicates(key)); iter.set(oldVal); assertEquals(oldVal, map.get(key)); assertTrue(map.duplicates(key).contains(oldVal)); checkDupsSize(1, map.duplicates(key)); } } void removeAll() throws Exception { writeIterRunner.run(new TransactionWorker() { public void doWork() throws Exception { assertTrue(!map.isEmpty()); ListIterator iter = null; try { if (list != null) { iter = (ListIterator) iterator(list); } else { iter = (ListIterator) iterator(map.values()); } iteratorSetAndRemoveNotAllowed(iter); Object val = iter.next(); assertNotNull(val); iter.remove(); iteratorSetAndRemoveNotAllowed(iter); if (index == null) { val = iter.next(); assertNotNull(val); iter.set(val); if (map.areDuplicatesAllowed()) { iter.add(makeVal(intVal(val), intVal(val) + 1)); iteratorSetAndRemoveNotAllowed(iter); } } } finally { StoredIterator.close(iter); } map.clear(); assertTrue(map.isEmpty()); assertTrue(map.entrySet().isEmpty()); assertTrue(map.keySet().isEmpty()); assertTrue(map.values().isEmpty()); for (int i = beginKey; i <= endKey; i += 1) { Long key = makeKey(i); Object val = makeVal(i); assertNull(map.get(key)); assertTrue(!map.duplicates(key).contains(val)); checkDupsSize(0, map.duplicates(key)); } } }); } void clearAll() throws Exception { writeRunner.run(new TransactionWorker() { public void doWork() throws Exception { map.clear(); assertTrue(map.isEmpty()); } }); } void iteratorSetAndRemoveNotAllowed(ListIterator i) { try { i.remove(); fail(); } catch (IllegalStateException e) {} if (index == null) { try { Object val = makeVal(1); i.set(val); fail(); } catch (IllegalStateException e) {} } } void removeOdd() throws Exception { writeRunner.run(new TransactionWorker() { public void doWork() throws Exception { boolean toggle = false; for (int i = beginKey; i <= endKey; i += 2) { toggle = !toggle; Long key = makeKey(i); Object val = makeVal(i); if (toggle) { assertTrue(map.keySet().contains(key)); assertTrue(map.keySet().remove(key)); assertTrue(!map.keySet().contains(key)); } else { assertTrue(map.containsValue(val)); Object oldVal = map.remove(key); assertEquals(oldVal, val); assertTrue(!map.containsKey(key)); assertTrue(!map.containsValue(val)); } assertNull(map.get(key)); assertTrue(!map.duplicates(key).contains(val)); checkDupsSize(0, map.duplicates(key)); } } }); } void removeOddEntity() throws Exception { writeRunner.run(new TransactionWorker() { public void doWork() throws Exception { for (int i = beginKey; i <= endKey; i += 2) { Long key = makeKey(i); Object val = makeVal(i); assertTrue(map.values().contains(val)); assertTrue(map.values().remove(val)); assertTrue(!map.values().contains(val)); assertNull(map.get(key)); assertTrue(!map.duplicates(key).contains(val)); checkDupsSize(0, map.duplicates(key)); } } }); } void removeOddEntry() throws Exception { writeRunner.run(new TransactionWorker() { public void doWork() throws Exception { for (int i = beginKey; i <= endKey; i += 2) { Long key = makeKey(i); Object val = mapEntry(i); assertTrue(map.entrySet().contains(val)); assertTrue(map.entrySet().remove(val)); assertTrue(!map.entrySet().contains(val)); assertNull(map.get(key)); } } }); } void removeOddIter() throws Exception { writeIterRunner.run(new TransactionWorker() { public void doWork() throws Exception { Iterator iter = iterator(map.keySet()); try { for (int i = beginKey; i <= endKey; i += 1) { assertTrue(iter.hasNext()); Long key = (Long) iter.next(); assertNotNull(key); if (map instanceof SortedMap) { assertEquals(makeKey(i), key); } if ((key.intValue() & 1) != 0) { iter.remove(); } } } finally { StoredIterator.close(iter); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -