/** * Grows {@code node} to contain {@code procId} and updates the map. * @return {@link BitSetNode} instance which contains {@code procId}. */ private BitSetNode growNode(BitSetNode node, long procId) { map.remove(node.getStart()); node.grow(procId); map.put(node.getStart(), node); return node; }
@Test public void testGrow() { BitSetNode node = new BitSetNode(1000, false); // contains, do not need to grow but should not fail assertTrue(node.canGrow(1024)); assertTrue(node.canGrow(900)); assertTrue(node.canGrow(1100)); assertFalse(node.canGrow(100)); assertFalse(node.canGrow(10000)); // grow to right node.grow(1100); assertTrue(node.contains(1100)); assertTrue(node.isModified(1000)); // grow to left node.grow(900); assertTrue(node.contains(900)); assertTrue(node.isModified(1000)); for (long i = node.getStart(); i <= node.getEnd(); i++) { if (i != 1000) { assertEquals(DeleteState.YES, node.isDeleted(i)); } else { assertEquals(DeleteState.NO, node.isDeleted(i)); } } }
/** * Grows {@code node} to contain {@code procId} and updates the map. * @return {@link BitSetNode} instance which contains {@code procId}. */ private BitSetNode growNode(BitSetNode node, long procId) { map.remove(node.getStart()); node.grow(procId); map.put(node.getStart(), node); return node; }
@Test public void testGrow() { BitSetNode node = new BitSetNode(1000, false); // contains, do not need to grow but should not fail assertTrue(node.canGrow(1024)); assertTrue(node.canGrow(900)); assertTrue(node.canGrow(1100)); assertFalse(node.canGrow(100)); assertFalse(node.canGrow(10000)); // grow to right node.grow(1100); assertTrue(node.contains(1100)); assertTrue(node.isModified(1000)); // grow to left node.grow(900); assertTrue(node.contains(900)); assertTrue(node.isModified(1000)); for (long i = node.getStart(); i <= node.getEnd(); i++) { if (i != 1000) { assertEquals(DeleteState.YES, node.isDeleted(i)); } else { assertEquals(DeleteState.NO, node.isDeleted(i)); } } }