public void testFreeAllocation() { HandleDataStore hds = new HandleDataStore(); allocate(hds, 1); allocate(hds, 3); allocate(hds, 2); allocate(hds, 10); allocate(hds, 100); allocate(hds, 1000); deallocate(hds, 100); deallocate(hds, 1); deallocate(hds, 1000); allocate(hds, 1003); allocate(hds, 1000); int h = hds.preallocate(); assertEquals(0, hds.allocate(h)); hds.deallocate(h, true); h = hds.allocate(); hds.deallocate(h); int[] right = new int[] {3, 2, 10, 1003, 1000}; h = hds.first(); int pos = 0; do { assertEquals(right[pos++], h); h = hds.next(h); } while (h != 0 && pos < right.length); assertEquals(0, h); assertEquals(right.length, pos); }
private void allocate(HandleDataStore hds, int handle) { assertTrue(hds.allocate(handle) != 0); assertTrue(hds.isAllocated(handle)); }
private void deallocate(HandleDataStore hds, int handle) { hds.deallocate(handle); assertTrue(!hds.isAllocated(handle)); }
public void testDefaultAllocation() { HandleDataStore hds = new HandleDataStore(); int i = 1; for (; i <= 10000; i++) { int handle = hds.allocate(); assertEquals(i, handle); } assertEquals(i - 1, hds.size()); assertEquals(i - 1, hds.last()); assertEquals(1, hds.first()); int handle = hds.first(); assertTrue(hds.isAllocated(handle)); for (i = 2; i <= 10000; i++) { assertEquals(i, handle = hds.next(handle)); assertTrue(hds.isAllocated(handle)); } assertEquals(0, handle = hds.next(handle)); assertTrue(!hds.isAllocated(handle)); handle = hds.last(); assertTrue(hds.isAllocated(handle)); for (i = 10000 - 1; i > 0; i--) { assertEquals(i, handle = hds.previous(handle)); assertTrue(hds.isAllocated(handle)); } assertEquals(0, handle = hds.previous(handle)); assertTrue(!hds.isAllocated(handle)); }