/* * TestRingBufferArrayFast.java of project jchart2d, Junit * test for class RingBufferArrayFast. * Copyright (c) 2007 Achim Westermann, created on 06:29:12. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA* * If you modify or optimize the code in a useful way please let me know. * Achim.Westermann@gmx.de * */ package info.monitorenter.util.collections; import java.util.Iterator; import junit.framework.Assert; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * Testcase for {@link info.monitorenter.util.collections.RingBufferArrayFast}. * <p> * * @author <a href="mailto:Achim.Westermann@gmx.de">Achim Westermann</a> * @version $Revision: 1.10 $ */ public class TestRingBufferArrayFast extends TestCase { /** * Test suite for this test class. * <p> * * @return the test suite */ public static Test suite() { TestSuite suite = new TestSuite(); suite.setName(TestRingBufferArrayFast.class.getName()); suite.addTest(new TestRingBufferArrayFast("testAdd")); suite.addTest(new TestRingBufferArrayFast("testIteratorF2L")); suite.addTest(new TestRingBufferArrayFast("testIteratorL2F")); suite.addTest(new TestRingBufferArrayFast("testSetBufferSize")); suite.addTest(new TestRingBufferArrayFast("testSize")); suite.addTest(new TestRingBufferArrayFast("testHashCode")); return suite; } /** * Creates a test case with the given name. * <p> * * @param testName * the name of the test case. */ public TestRingBufferArrayFast(final String testName) { super(testName); } /** * Test method for {@link info.monitorenter.util.collections.RingBufferArrayFast#add(Object)}. * <p> */ public void testAdd() { RingBufferArrayFast<Integer> ringBuffer = new RingBufferArrayFast<Integer>(1); System.out.println("Adding 1 element to a buffer of size 1."); ringBuffer.add(new Integer(0)); Assert.assertEquals(1, ringBuffer.size()); } /** * Test method for {@link info.monitorenter.util.collections.RingBufferArrayFast#iteratorF2L()}. * <p> */ public void testIteratorF2L() { IRingBuffer<Integer> ringBuffer = new RingBufferArrayFast<Integer>(10); System.out.println("Adding 2 elements to a buffer of size 10"); for (int i = 0; i < 2; i++) { ringBuffer.add(Integer.valueOf(i)); } Assert.assertEquals(2, ringBuffer.size()); int value = 1; Iterator<Integer> it = ringBuffer.iteratorF2L(); Integer removed; while (it.hasNext()) { removed = it.next(); Assert.assertNotNull("Element no. " + value + " is null.", removed); // tests the order of the iterator: Assert.assertEquals(removed.intValue(), value); value--; } ringBuffer.clear(); Assert.assertEquals(0, ringBuffer.size()); value = 0; System.out.println("Adding 1 element to a buffer of size 10"); for (int i = 0; i < 1; i++) { ringBuffer.add(Integer.valueOf(i)); } Assert.assertEquals(1, ringBuffer.size()); it = ringBuffer.iteratorF2L(); while (it.hasNext()) { removed = it.next(); Assert.assertNotNull("Element no. " + value + " is null.", removed); // tests the order of the iterator: Assert.assertEquals(removed.intValue(), value); value--; } ringBuffer.clear(); Assert.assertEquals(0, ringBuffer.size()); value = 9; System.out.println("Adding 10 elements to a buffer of size 10"); for (int i = 0; i < 10; i++) { ringBuffer.add(Integer.valueOf(i)); } Assert.assertEquals(10, ringBuffer.size()); it = ringBuffer.iteratorF2L(); while (it.hasNext()) { removed = it.next(); Assert.assertNotNull("Element no. " + value + " is null.", removed); // tests the order of the iterator: Assert.assertEquals(removed.intValue(), value); value--; } ringBuffer.clear(); Assert.assertEquals(0, ringBuffer.size()); value = 11; System.out.println("Adding 12 elements to a buffer of size 10"); for (int i = 0; i < 12; i++) { ringBuffer.add(Integer.valueOf(i)); } Assert.assertEquals(10, ringBuffer.size()); it = ringBuffer.iteratorF2L(); while (it.hasNext()) { removed = it.next(); Assert.assertNotNull("Element no. " + value + " is null.", removed); // tests the order of the iterator: Assert.assertEquals(removed.intValue(), value); value--; } System.out.println("Testing for side effects of hasNext()..."); it = ringBuffer.iteratorF2L(); for (int i = 0; i < 100; i++) { Assert.assertTrue(it.hasNext()); } System.out.println("Testing hasNext() with iterator f2l on empty buffer..."); ringBuffer.clear(); Assert.assertEquals(0, ringBuffer.size()); Assert.assertTrue(ringBuffer.isEmpty()); it = ringBuffer.iteratorF2L(); Assert.assertFalse(it.hasNext()); System.out.println("Testing hasNext() with iterator l2f on empty buffer..."); ringBuffer.clear(); Assert.assertEquals(0, ringBuffer.size()); Assert.assertTrue(ringBuffer.isEmpty()); it = ringBuffer.iteratorL2F(); Assert.assertFalse(it.hasNext()); } /** * Test method for {@link info.monitorenter.util.collections.RingBufferArrayFast#iteratorL2F()}. * <p> */ public void testIteratorL2F() { IRingBuffer<Integer> ringBuffer = new RingBufferArrayFast<Integer>(10); System.out.println("Adding 2 elements to a buffer of size 10"); for (int i = 0; i < 2; i++) { ringBuffer.add(Integer.valueOf(i)); } Assert.assertEquals(2, ringBuffer.size()); int value = 0; for (Integer removed : ringBuffer) { Assert.assertNotNull("Element no. " + value + " is null.", removed); // tests the order of the iterator: Assert.assertEquals(removed.intValue(), value); value++; } ringBuffer.clear(); Assert.assertEquals(0, ringBuffer.size()); value = 0; System.out.println("Adding 1 element to a buffer of size 10"); for (int i = 0; i < 1; i++) { ringBuffer.add(Integer.valueOf(i)); } Assert.assertEquals(1, ringBuffer.size()); for (Integer removed : ringBuffer) { Assert.assertNotNull("Element no. " + value + " is null.", removed); // tests the order of the iterator: Assert.assertEquals(removed.intValue(), value); value++; } ringBuffer.clear(); Assert.assertEquals(0, ringBuffer.size()); value = 0; System.out.println("Adding 10 elements to a buffer of size 10"); for (int i = 0; i < 10; i++) { ringBuffer.add(Integer.valueOf(i)); } Assert.assertEquals(10, ringBuffer.size()); for (Integer removed : ringBuffer) { Assert.assertNotNull("Element no. " + value + " is null.", removed); // tests the order of the iterator: Assert.assertEquals(removed.intValue(), value); value++; } ringBuffer.clear(); Assert.assertEquals(0, ringBuffer.size()); value = 2; System.out.println("Adding 12 elements to a buffer of size 10"); for (int i = 0; i < 12; i++) { ringBuffer.add(Integer.valueOf(i)); } Assert.assertEquals(10, ringBuffer.size()); for (Integer removed : ringBuffer) { Assert.assertNotNull("Element no. " + value + " is null.", removed); // tests the order of the iterator: Assert.assertEquals(value, removed.intValue()); value++; } System.out.println("Testing for side effects of hasNext()..."); Iterator<Integer> it = ringBuffer.iteratorL2F(); for (int i = 0; i < 100; i++) { Assert.assertTrue(it.hasNext()); } System.out.println("Testing hasNext() with iterator on empty buffer..."); ringBuffer.clear(); Assert.assertEquals(0, ringBuffer.size()); Assert.assertTrue(ringBuffer.isEmpty()); it = ringBuffer.iteratorL2F(); Assert.assertFalse(it.hasNext()); } /** * Test method for * {@link info.monitorenter.util.collections.RingBufferArrayFast#setBufferSize(int)}. * <p> */ public void testSetBufferSize() { IRingBuffer<Integer> buffer = new RingBufferArrayFast<Integer>(3); Assert.assertEquals(3, buffer.getBufferSize()); for (int i = 0; i < 3; i++) { buffer.add(Integer.valueOf(i)); } Assert.assertEquals(3, buffer.size()); System.out.println("before setting size from 3 to 4: " + buffer.toString()); buffer.setBufferSize(4); System.out.println("after setting size from 3 to 4: " + buffer.toString()); Assert.assertEquals(3, buffer.size()); Assert.assertEquals(4, buffer.getBufferSize()); buffer.setBufferSize(2); Assert.assertEquals(2, buffer.size()); Assert.assertEquals(2, buffer.getBufferSize()); Iterator<Integer> it = buffer.iteratorL2F(); Assert.assertEquals(1, it.next().intValue()); Assert.assertEquals(2, it.next().intValue()); Assert.assertFalse(it.hasNext()); } /** * Test method for * {@link info.monitorenter.util.collections.RingBufferArrayFast#hashCode()}. * <p> */ public void testHashCode() { final IRingBuffer<Integer> buffer1 = new RingBufferArrayFast<Integer>(4); for (int i = 0; i < 2; i++) { buffer1.add(Integer.valueOf(i)); } final IRingBuffer<Integer> buffer2 = buffer1; buffer1.add(Integer.valueOf(3)); Assert.assertEquals("Hashcode is different.", buffer1.hashCode(), buffer2.hashCode()); } /** * Test method for {@link info.monitorenter.util.collections.RingBufferArrayFast#size()}. * <p> */ public void testSize() { RingBufferArrayFast<Integer> ringBuffer = new RingBufferArrayFast<Integer>(100); System.out .println("Adding 100 elements to a buffer with capacity of 100 with size assertions."); for (int i = 0; i < 100; i++) { Assert.assertEquals(i, ringBuffer.size()); ringBuffer.add(Integer.valueOf(i)); } System.out .println("Adding 10 elements to a full buffer with capacity of 100 with size assertions."); for (int i = 0; i < 10; i++) { ringBuffer.add(Integer.valueOf(i)); Assert.assertEquals(100, ringBuffer.size()); } } }