⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 collectiontest.java

📁 berkeley db 4.6.21的源码。berkeley db是一个简单的数据库管理系统
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            }        });    }    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 + -