public void testInternalStateIteratorRemoveWithWrap1() { UnboundedFifoBuffer test = new UnboundedFifoBuffer(3); test.add("A"); test.add("B"); test.add("C"); test.remove("A"); test.remove("B"); test.add("D"); test.add("E"); assertEquals(4, test.m_buffer.length); assertEquals(2, test.m_head); assertEquals(1, test.m_tail); Iterator it = test.iterator(); assertEquals("C", it.next()); it.remove(); assertEquals(4, test.m_buffer.length); assertEquals(3, test.m_head); assertEquals(1, test.m_tail); }
/** * Returns the next object in the buffer. * * @return the next object in the buffer * @throws BufferUnderflowException if this buffer is empty */ public Object get() { if (isEmpty()) { throw new BufferUnderflowException("The buffer is already empty"); } return m_buffer[m_head]; }
/** * Returns true if this buffer is empty; false otherwise. * * @return true if this buffer is empty */ public boolean isEmpty() { return (size() == 0); }
public void testInternalStateIteratorRemove2() { UnboundedFifoBuffer test = new UnboundedFifoBuffer(4); test.add("A"); test.add("B"); test.add("C"); Iterator it = test.iterator(); it.next(); it.next(); it.remove(); assertEquals(5, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(2, test.m_tail); test.add("D"); assertEquals(5, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(3, test.m_tail); }
public void remove() { if (lastReturnedIndex == -1) throw new IllegalStateException(); // First element can be removed quickly if (lastReturnedIndex == m_head) { UnboundedFifoBuffer.this.remove(); lastReturnedIndex = -1; return; } // Other elements require us to shift the subsequent elements int i = increment(lastReturnedIndex); while (i != m_tail) { m_buffer[decrement(i)] = m_buffer[i]; i = increment(i); } lastReturnedIndex = -1; m_tail = decrement(m_tail); m_buffer[m_tail] = null; index = decrement(index); }
public void testInternalStateRemove1() { UnboundedFifoBuffer test = new UnboundedFifoBuffer(4); test.add("A"); test.add("B"); test.add("C"); assertEquals(5, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(3, test.m_tail); test.remove("A"); assertEquals(5, test.m_buffer.length); assertEquals(1, test.m_head); assertEquals(3, test.m_tail); test.add("D"); assertEquals(5, test.m_buffer.length); assertEquals(1, test.m_head); assertEquals(4, test.m_tail); }
public void testInternalStateAdd() { UnboundedFifoBuffer test = new UnboundedFifoBuffer(2); assertEquals(3, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(0, test.m_tail); test.add("A"); assertEquals(3, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(1, test.m_tail); test.add("B"); assertEquals(3, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(2, test.m_tail); test.add("C"); // forces m_buffer increase assertEquals(5, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(3, test.m_tail); test.add("D"); assertEquals(5, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(4, test.m_tail); }
/** * Returns an empty UnboundedFifoBuffer with a small capacity. * * @return an empty UnboundedFifoBuffer */ public Collection makeCollection() { return new UnboundedFifoBuffer(5); }
public void remove() { if (lastReturnedIndex == -1) throw new IllegalStateException(); // First element can be removed quickly if (lastReturnedIndex == m_head) { UnboundedFifoBuffer.this.remove(); lastReturnedIndex = -1; return; } // Other elements require us to shift the subsequent elements int i = increment(lastReturnedIndex); while (i != m_tail) { m_buffer[decrement(i)] = m_buffer[i]; i = increment(i); } lastReturnedIndex = -1; m_tail = decrement(m_tail); m_buffer[m_tail] = null; index = decrement(index); }
public void testInternalStateRemove2() { UnboundedFifoBuffer test = new UnboundedFifoBuffer(4); test.add("A"); test.add("B"); test.add("C"); assertEquals(5, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(3, test.m_tail); test.remove("B"); assertEquals(5, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(2, test.m_tail); test.add("D"); assertEquals(5, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(3, test.m_tail); }
public void testInternalStateIteratorRemove1() { UnboundedFifoBuffer test = new UnboundedFifoBuffer(4); test.add("A"); test.add("B"); test.add("C"); assertEquals(5, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(3, test.m_tail); Iterator it = test.iterator(); it.next(); it.remove(); assertEquals(5, test.m_buffer.length); assertEquals(1, test.m_head); assertEquals(3, test.m_tail); test.add("D"); assertEquals(5, test.m_buffer.length); assertEquals(1, test.m_head); assertEquals(4, test.m_tail); }
/** * Tests that the constructor correctly throws an exception. */ public void testConstructorException2() { try { new UnboundedFifoBuffer(-20); } catch (IllegalArgumentException ex) { return; } fail(); }
public void testInternalStateIteratorRemoveWithTailAtEnd1() { UnboundedFifoBuffer test = new UnboundedFifoBuffer(3); test.add("A"); test.add("B"); test.add("C"); test.remove("A"); test.add("D"); assertEquals(4, test.m_buffer.length); assertEquals(1, test.m_head); assertEquals(0, test.m_tail); Iterator it = test.iterator(); assertEquals("B", it.next()); it.remove(); assertEquals(4, test.m_buffer.length); assertEquals(2, test.m_head); assertEquals(0, test.m_tail); }
/** * Returns the next object in the buffer. * * @return the next object in the buffer * @throws BufferUnderflowException if this buffer is empty */ public Object get() { if (isEmpty()) { throw new BufferUnderflowException("The buffer is already empty"); } return m_buffer[m_head]; }
/** * Returns true if this buffer is empty; false otherwise. * * @return true if this buffer is empty */ public boolean isEmpty() { return (size() == 0); }
/** * Tests that UnboundedFifoBuffer removes elements in the right order. */ public void testUnboundedFifoBufferRemove() { resetFull(); int size = confirmed.size(); for (int i = 0; i < size; i++) { Object o1 = ((UnboundedFifoBuffer)collection).remove(); Object o2 = ((ArrayList)confirmed).remove(0); assertEquals("Removed objects should be equal", o1, o2); verify(); } }
public void testInternalStateAddWithWrap() { UnboundedFifoBuffer test = new UnboundedFifoBuffer(3); assertEquals(4, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(0, test.m_tail); test.add("A"); assertEquals(4, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(1, test.m_tail); test.add("B"); assertEquals(4, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(2, test.m_tail); test.add("C"); assertEquals(4, test.m_buffer.length); assertEquals(0, test.m_head); assertEquals(3, test.m_tail); test.remove("A"); assertEquals(4, test.m_buffer.length); assertEquals(1, test.m_head); assertEquals(3, test.m_tail); test.remove("B"); assertEquals(4, test.m_buffer.length); assertEquals(2, test.m_head); assertEquals(3, test.m_tail); test.add("D"); assertEquals(4, test.m_buffer.length); assertEquals(2, test.m_head); assertEquals(0, test.m_tail); test.add("E");
/** * Tests that the constructor correctly throws an exception. */ public void testConstructorException1() { try { new UnboundedFifoBuffer(0); } catch (IllegalArgumentException ex) { return; } fail(); }
public void testInternalStateIteratorRemoveWithWrap2() { UnboundedFifoBuffer test = new UnboundedFifoBuffer(3); test.add("A"); test.add("B"); test.add("C"); test.remove("A"); test.remove("B"); test.add("D"); test.add("E"); assertEquals(4, test.m_buffer.length); assertEquals(2, test.m_head); assertEquals(1, test.m_tail); Iterator it = test.iterator(); assertEquals("C", it.next()); assertEquals("D", it.next()); it.remove(); assertEquals(4, test.m_buffer.length); assertEquals(2, test.m_head); assertEquals(0, test.m_tail); }
/** * Removes the next object from the buffer * * @return the removed object * @throws BufferUnderflowException if this buffer is empty */ public Object remove() { if (isEmpty()) { throw new BufferUnderflowException("The buffer is already empty"); } Object element = m_buffer[m_head]; if (null != element) { m_buffer[m_head] = null; m_head++; if (m_head >= m_buffer.length) { m_head = 0; } } return element; }