package com.limegroup.gnutella.util; import java.util.ConcurrentModificationException; import java.util.Iterator; import java.util.NoSuchElementException; import junit.framework.Test; public class BufferTest extends com.limegroup.gnutella.util.BaseTestCase { public BufferTest(String name) { super(name); } public static Test suite() { return buildTestSuite(BufferTest.class); } public void testLegacy() { //1. Tests of old methods. Buffer buf=new Buffer(4); Iterator iter=null; assertEquals(4, buf.getCapacity()); assertEquals(0, buf.getSize()); iter=buf.iterator(); assertTrue(!iter.hasNext()); try { iter.next(); assertTrue(false); } catch (NoSuchElementException e) { assertTrue(true); } buf.add("test"); assertEquals(1, buf.getSize()); iter=buf.iterator(); assertTrue(iter.hasNext()); assertEquals("test", iter.next()); assertTrue(!iter.hasNext()); try { iter.next(); assertTrue(false); } catch (NoSuchElementException e) {} buf.add("test2"); assertEquals(2,buf.getSize()); buf.add("test3"); assertEquals(3,buf.getSize()); iter=buf.iterator(); assertTrue(iter.hasNext()); assertEquals("test3",iter.next()); assertTrue(iter.hasNext()); assertEquals("test2", iter.next()); assertTrue(iter.hasNext()); assertEquals("test", iter.next()); assertTrue(!iter.hasNext()); buf.add("test4"); assertEquals(4,buf.getSize()); buf.add("test5"); assertEquals(4,buf.getSize()); iter=buf.iterator(); assertTrue(iter.hasNext()); assertEquals("test5", iter.next()); assertTrue(iter.hasNext()); assertEquals("test4", iter.next()); assertTrue(iter.hasNext()); assertEquals("test3", iter.next()); assertTrue(iter.hasNext()); assertEquals("test2",iter.next()); assertTrue(!iter.hasNext()); buf.add("test6"); assertEquals(4,buf.getSize()); //2. Tests of new methods. These are definitely not sufficient. buf=new Buffer(4); assertEquals(0,buf.getSize()); assertNull(buf.addLast("a")); assertEquals(1,buf.getSize()); assertNull(buf.addLast("b")); assertEquals(2,buf.getSize()); assertNull(buf.addLast("c")); assertEquals(3,buf.getSize()); assertNull(buf.addLast("d")); assertEquals(4,buf.getSize()); assertEquals("a", buf.first()); assertEquals("a", buf.removeFirst()); assertEquals(3,buf.getSize()); assertEquals("b",buf.first()); assertEquals("b", buf.removeFirst()); assertEquals(2,buf.getSize()); assertNull(buf.addFirst("b")); assertEquals(3,buf.getSize()); assertNull(buf.addFirst("a")); assertEquals(4,buf.getSize()); //buf=[a b c d] assertEquals("a", buf.addLast("e")); //buf=[b c d e] assertEquals("e",buf.last()); assertEquals("b",buf.first()); assertEquals("e", buf.removeLast()); assertEquals("d",buf.removeLast()); buf=new Buffer(4); iter=buf.iterator(); buf.addFirst("a"); try { iter.hasNext(); assertTrue(false); } catch (ConcurrentModificationException e) { assertTrue(true); } buf=new Buffer(4); buf.addFirst("a"); buf.addLast("b"); buf.clear(); assertEquals(0,buf.getSize()); iter=buf.iterator(); assertTrue(! iter.hasNext()); //3. Tests of get and set. buf=new Buffer(3); try { buf.get(0); assertTrue(false); } catch (IndexOutOfBoundsException e) { } try { buf.get(-1); assertTrue(false); } catch (IndexOutOfBoundsException e) { } buf.addLast("a"); buf.addLast("b"); buf.addLast("c"); buf.addLast("d"); //clobbers a! assertEquals("b", buf.get(0)); assertEquals("c", buf.get(1)); assertEquals("d", buf.get(2)); buf.set(2,"bb"); assertEquals("bb", buf.get(2)); //4. Tests of remove and removeAll methods. buf=new Buffer(4); buf.addLast("a"); buf.addLast("b"); buf.addLast("c"); buf.addLast("d"); try { buf.remove(-1); assertTrue(false); } catch (IndexOutOfBoundsException e) { } assertEquals("a",(buf.remove(0))); assertEquals(3,buf.size()); assertEquals("b",buf.get(0)); assertEquals("c", buf.get(1)); assertEquals("d", buf.get(2)); buf=new Buffer(4); buf.addLast("x"); buf.addLast("y"); buf.addLast("a"); buf.addLast("b"); buf.addLast("c"); buf.addLast("d"); try { buf.remove(5); assertTrue(false); } catch (IndexOutOfBoundsException e) { } assertEquals("a",(buf.remove(0))); assertEquals(3,buf.size()); assertEquals("b", buf.get(0)); assertEquals("c", buf.get(1)); assertEquals("d", buf.get(2)); buf=new Buffer(4); buf.addLast("a"); buf.addLast("b"); buf.addLast("c"); buf.addLast("d"); try { buf.remove(5); assertTrue(false); } catch (IndexOutOfBoundsException e) { } assertEquals("d",buf.remove(3)); assertEquals(3,buf.size()); assertEquals("a", buf.get(0)); assertEquals("b", buf.get(1)); assertEquals("c", buf.get(2)); buf=new Buffer(4); buf.addLast("a"); buf.addLast("b"); buf.addLast("c"); buf.addLast("d"); try { buf.remove(5); assertTrue(false); } catch (IndexOutOfBoundsException e) { } assertEquals("b",buf.remove(1)); assertEquals(3,buf.size()); assertEquals("a",buf.get(0)); assertEquals("c", buf.get(1)); assertEquals("d", buf.get(2)); buf=new Buffer(4); buf.addLast("b"); buf.addLast("b"); buf.addLast("c"); buf.addLast("d"); assertTrue(buf.remove("d")); assertTrue(buf.remove("b")); assertEquals(2,buf.size()); assertEquals("b", buf.get(0)); assertEquals("c", buf.get(1)); buf=new Buffer(4); buf.addLast("b"); buf.addLast("b"); buf.addLast("c"); buf.addLast("b"); assertTrue(buf.removeAll("b")); assertEquals(1,buf.size()); assertEquals("c",buf.get(0)); //5. Test clone() method. buf=new Buffer(2); buf.addLast("a"); buf.addLast("b"); Buffer buf2=new Buffer(buf); assertEquals(buf2.size(),buf.size()); assertEquals(buf2.getCapacity(),buf.getCapacity()); assertEquals(buf2.first(),buf.first()); assertEquals(buf2.last(),buf.last()); assertNotNull(buf.removeFirst()); //buf2 unmodified assertEquals(1,buf.size()); assertEquals(2,buf2.size()); assertEquals("b",buf.first()); assertEquals("a",buf2.first()); assertEquals("b",buf2.last()); } public void testContains() { Buffer buf = new Buffer(3); buf.add("a"); assertTrue(buf.contains("a")); buf.add("b"); assertTrue(buf.contains("b")); buf.addLast("c"); assertTrue(buf.contains("a")); assertTrue(buf.contains("b")); assertTrue(buf.contains("c")); buf.add("d"); assertTrue(buf.contains("d")); assertTrue(buf.contains("a")); assertTrue(buf.contains("b")); assertTrue(!buf.contains("c")); buf.addLast("e"); assertTrue(buf.contains("e")); assertTrue(buf.contains("a")); assertTrue(buf.contains("b")); assertTrue(!buf.contains("d")); } }