@Override public E get(long index) { lock.lock(); try { return events.get(index); } finally { lock.unlock(); } }
@Test public void one() { instance.add((long) 1); assertFalse("Instance is empty!", instance.isEmpty()); assertFalse("Instance is full!", instance.isFull()); assertEquals("Size doesn't match!", 1, instance.getAvailableElements()); assertEquals("getBufferSize doesn't match!", TEST_BUFFER_SIZE, instance.getBufferSize()); assertEquals("overflowCounter doesn't match!", 0, instance.getOverflowCounter()); Iterator<Long> iterator = instance.iterator(); assertTrue("iterator doesn't have next!", iterator.hasNext()); Long element = iterator.next(); Long getRelativeValue = instance.getRelative(0); Long getValue = instance.get(0); if(logger.isInfoEnabled()) logger.info("Element #{}: iterValue={}, getRelativeValue={}, getValue={}", 0, element, getRelativeValue, getValue); assertEquals("Unexpected value returned by iterator!", (Long) (long) 1, element); assertEquals("Iterator and getRelative values differ!", element, getRelativeValue); assertEquals("Iterator and get values differ!", element, getValue); }
@Test public void addAllList() { List<Long> values = new ArrayList<>(); for(int i = 0; i < 4 * TEST_BUFFER_SIZE; i++) { values.add((long) i); } if(logger.isInfoEnabled()) logger.info("Adding values: {}", values); instance.addAll(values); if(logger.isInfoEnabled()) logger.info("Buffer after adding: {}", instance); assertFalse("Instance is empty!", instance.isEmpty()); assertTrue("Instance isn't full!", instance.isFull()); assertEquals("Size doesn't match!", TEST_BUFFER_SIZE, instance.getAvailableElements()); assertEquals("getBufferSize doesn't match!", TEST_BUFFER_SIZE, instance.getBufferSize()); long overflowCounter = instance.getOverflowCounter(); assertEquals("overflowCounter doesn't match!", 3 * TEST_BUFFER_SIZE, overflowCounter); Iterator<Long> iterator = instance.iterator(); assertTrue("iterator doesn't have next!", iterator.hasNext()); for(int i = 0; i < TEST_BUFFER_SIZE; i++) { Long element = iterator.next(); Long getRelativeValue = instance.getRelative(i); Long getValue = instance.get(i + overflowCounter); if(logger.isInfoEnabled()) logger.info("Element #{}: iterValue={}, getRelativeValue={}", i, element, getRelativeValue); assertEquals("Unexpected value returned by iterator!", (Long) (long) (i + 3 * TEST_BUFFER_SIZE), element); assertEquals("Iterator and getRelative values differ!", element, getRelativeValue); assertEquals("Iterator and get values differ!", element, getValue); } }
@Override public E get(long index) { lock.lock(); try { return events.get(index); } finally { lock.unlock(); } }
@Test public void addAllArray() { Long[] values = new Long[4 * TEST_BUFFER_SIZE]; for(int i = 0; i < 4 * TEST_BUFFER_SIZE; i++) { values[i] = (long) i; } if(logger.isInfoEnabled()) logger.info("Adding values: {}", (Object)values); instance.addAll(values); if(logger.isInfoEnabled()) logger.info("Buffer after adding: {}", instance); assertFalse("Instance is empty!", instance.isEmpty()); assertTrue("Instance isn't full!", instance.isFull()); assertEquals("Size doesn't match!", TEST_BUFFER_SIZE, instance.getAvailableElements()); assertEquals("getBufferSize doesn't match!", TEST_BUFFER_SIZE, instance.getBufferSize()); long overflowCounter = instance.getOverflowCounter(); assertEquals("overflowCounter doesn't match!", 3 * TEST_BUFFER_SIZE, overflowCounter); Iterator<Long> iterator = instance.iterator(); assertTrue("iterator doesn't have next!", iterator.hasNext()); for(int i = 0; i < TEST_BUFFER_SIZE; i++) { Long element = iterator.next(); Long getRelativeValue = instance.getRelative(i); Long getValue = instance.get(i + overflowCounter); if(logger.isInfoEnabled()) logger.info("Element #{}: iterValue={}, getRelativeValue={}", i, element, getRelativeValue); assertEquals("Unexpected value returned by iterator!", (Long) (long) (i + 3 * TEST_BUFFER_SIZE), element); assertEquals("Iterator and getRelative values differ!", element, getRelativeValue); assertEquals("Iterator and get values differ!", element, getValue); } }
@Test public void overflowDouble() { for(int i = 0; i < TEST_BUFFER_SIZE * 2; i++) { instance.add((long) i); } assertFalse("Instance is empty!", instance.isEmpty()); assertTrue("Instance isn't full!", instance.isFull()); assertEquals("Size doesn't match!", TEST_BUFFER_SIZE, instance.getAvailableElements()); assertEquals("getBufferSize doesn't match!", TEST_BUFFER_SIZE, instance.getBufferSize()); long overflowCounter = instance.getOverflowCounter(); assertEquals("overflowCounter doesn't match!", TEST_BUFFER_SIZE, overflowCounter); Iterator<Long> iterator = instance.iterator(); assertTrue("iterator doesn't have next!", iterator.hasNext()); for(int i = 0; i < TEST_BUFFER_SIZE; i++) { Long element = iterator.next(); Long getRelativeValue = instance.getRelative(i); Long getValue = instance.get(i + overflowCounter); if(logger.isInfoEnabled()) logger.info("Element #{}: iterValue={}, getRelativeValue={}", i, element, getRelativeValue); assertEquals("Unexpected value returned by iterator!", (Long) (long) (i + TEST_BUFFER_SIZE), element); assertEquals("Iterator and getRelative values differ!", element, getRelativeValue); assertEquals("Iterator and get values differ!", element, getValue); } }
@Test public void nearlyFull() { for(int i = 0; i < TEST_BUFFER_SIZE - 1; i++) { instance.add((long) i); } assertFalse("Instance is empty!", instance.isEmpty()); assertFalse("Instance is full!", instance.isFull()); assertEquals("Size doesn't match!", TEST_BUFFER_SIZE - 1, instance.getAvailableElements()); assertEquals("getBufferSize doesn't match!", TEST_BUFFER_SIZE, instance.getBufferSize()); assertEquals("overflowCounter doesn't match!", 0, instance.getOverflowCounter()); Iterator<Long> iterator = instance.iterator(); assertTrue("iterator doesn't have next!", iterator.hasNext()); for(int i = 0; i < TEST_BUFFER_SIZE - 1; i++) { Long element = iterator.next(); Long getRelativeValue = instance.getRelative(i); Long getValue = instance.get(i); if(logger.isInfoEnabled()) logger.info("Element #{}: iterValue={}, getRelativeValue={}", i, element, getRelativeValue); assertEquals("Unexpected value returned by iterator!", (Long) (long) i, element); assertEquals("Iterator and getRelative values differ!", element, getRelativeValue); assertEquals("Iterator and get values differ!", element, getValue); } }
@Test public void full() { for(int i = 0; i < TEST_BUFFER_SIZE; i++) { instance.add((long) i); } assertFalse("Instance is empty!", instance.isEmpty()); assertTrue("Instance isn't full!", instance.isFull()); assertEquals("Size doesn't match!", TEST_BUFFER_SIZE, instance.getAvailableElements()); assertEquals("getBufferSize doesn't match!", TEST_BUFFER_SIZE, instance.getBufferSize()); assertEquals("overflowCounter doesn't match!", 0, instance.getOverflowCounter()); Iterator<Long> iterator = instance.iterator(); assertTrue("iterator doesn't have next!", iterator.hasNext()); for(int i = 0; i < TEST_BUFFER_SIZE; i++) { Long element = iterator.next(); Long getRelativeValue = instance.getRelative(i); Long getValue = instance.get(i); if(logger.isInfoEnabled()) logger.info("Element #{}: iterValue={}, getRelativeValue={}", i, element, getRelativeValue); assertEquals("Unexpected value returned by iterator!", (Long) (long) i, element); assertEquals("Iterator and getRelative values differ!", element, getRelativeValue); assertEquals("Iterator and get values differ!", element, getValue); } }
@Test public void overflowOne() { for(int i = 0; i < TEST_BUFFER_SIZE; i++) { instance.add((long) i); } instance.add((long) TEST_BUFFER_SIZE); assertFalse("Instance is empty!", instance.isEmpty()); assertTrue("Instance isn't full!", instance.isFull()); assertEquals("Size doesn't match!", TEST_BUFFER_SIZE, instance.getAvailableElements()); assertEquals("getBufferSize doesn't match!", TEST_BUFFER_SIZE, instance.getBufferSize()); long overflowCounter = instance.getOverflowCounter(); assertEquals("overflowCounter doesn't match!", 1, overflowCounter); Iterator<Long> iterator = instance.iterator(); assertTrue("iterator doesn't have next!", iterator.hasNext()); for(int i = 0; i < TEST_BUFFER_SIZE; i++) { Long element = iterator.next(); Long getRelativeValue = instance.getRelative(i); Long getValue = instance.get(i + overflowCounter); if(logger.isInfoEnabled()) logger.info("Element #{}: iterValue={}, getRelativeValue={}", i, element, getRelativeValue); assertEquals("Unexpected value returned by iterator!", (Long) (long) (i + 1), element); assertEquals("Iterator and getRelative values differ!", element, getRelativeValue); assertEquals("Iterator and get values differ!", element, getValue); } }