package org.apache.jdbm; import java.io.IOException; import java.util.Map; public class TestLazyRecordsInTree extends TestCaseWithTestFile { String makeString(int size) { StringBuilder s = new StringBuilder(size); for (int i = 0; i < size; i++) { s.append('a'); } return s.toString(); } void doIt(DBStore r, Map<Integer, String> m) throws IOException { m.put(1, ""); long counter = r.countRecords(); //number of records should increase after inserting big record m.put(1, makeString(1000)); assertEquals(counter + 1, r.countRecords()); assertEquals(m.get(1), makeString(1000)); //old record should be disposed when replaced with big record m.put(1, makeString(1001)); assertEquals(counter + 1, r.countRecords()); assertEquals(m.get(1), makeString(1001)); //old record should be disposed when replaced with small record m.put(1, "aa"); assertEquals(counter, r.countRecords()); assertEquals(m.get(1), "aa"); //old record should be disposed after deleting m.put(1, makeString(1001)); assertEquals(counter + 1, r.countRecords()); assertEquals(m.get(1), makeString(1001)); m.remove(1); assertTrue(counter >= r.countRecords()); assertEquals(m.get(1), null); } public void testBTree() throws IOException { DBStore r = newDBNoCache(); Map<Integer, String> m = r.createTreeMap("test"); doIt(r, m); } public void testHTree() throws IOException { DBStore r = newDBNoCache(); Map<Integer, String> m = r.createHashMap("test"); doIt(r, m); } }