From d9a37093e2b24cd6d5dc09bde5ac596402e6226c Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Thu, 4 Sep 2008 11:53:44 +0000 Subject: [PATCH] More test cases and trivial fixes --- .../buffer/ByteBufferBackedChannelBuffer.java | 8 +++++++- .../netty/buffer/DynamicChannelBuffer.java | 8 ++------ .../netty/buffer/SlicedChannelBuffer.java | 1 + .../netty/buffer/TruncatedChannelBuffer.java | 1 + .../buffer/AbstractChannelBufferTest.java | 20 +++++++++++++++++++ .../BigEndianHeapChannelBufferTest.java | 7 +++++++ ...ByteBufferBackedHeapChannelBufferTest.java | 7 +++++++ .../buffer/DuplicateChannelBufferTest.java | 7 +++++++ .../buffer/DynamicChannelBufferTest.java | 7 +++++++ .../LittleEndianHeapChannelBufferTest.java | 7 +++++++ .../netty/buffer/SlicedChannelBufferTest.java | 7 +++++++ .../buffer/TruncatedChannelBufferTest.java | 7 +++++++ 12 files changed, 80 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/jboss/netty/buffer/ByteBufferBackedChannelBuffer.java b/src/main/java/org/jboss/netty/buffer/ByteBufferBackedChannelBuffer.java index 76e5d77f93..77ec270a19 100644 --- a/src/main/java/org/jboss/netty/buffer/ByteBufferBackedChannelBuffer.java +++ b/src/main/java/org/jboss/netty/buffer/ByteBufferBackedChannelBuffer.java @@ -314,7 +314,13 @@ public class ByteBufferBackedChannelBuffer extends AbstractChannelBuffer { } public ChannelBuffer copy(int index, int length) { - ByteBuffer src = (ByteBuffer) buffer.duplicate().position(index).limit(index + length); + ByteBuffer src; + try { + src = (ByteBuffer) buffer.duplicate().position(index).limit(index + length); + } catch (IllegalArgumentException e) { + throw new IndexOutOfBoundsException(); + } + ByteBuffer dst = buffer.isDirect() ? ByteBuffer.allocateDirect(length) : ByteBuffer.allocate(length); dst.put(src); dst.clear(); diff --git a/src/main/java/org/jboss/netty/buffer/DynamicChannelBuffer.java b/src/main/java/org/jboss/netty/buffer/DynamicChannelBuffer.java index f125309c0d..dfb41e1a22 100644 --- a/src/main/java/org/jboss/netty/buffer/DynamicChannelBuffer.java +++ b/src/main/java/org/jboss/netty/buffer/DynamicChannelBuffer.java @@ -216,12 +216,8 @@ public class DynamicChannelBuffer extends AbstractChannelBuffer { public ChannelBuffer copy(int index, int length) { DynamicChannelBuffer copiedBuffer = new DynamicChannelBuffer(endianness, Math.max(length, 64)); - if (readable()) { - copiedBuffer.buffer = buffer.copy(readerIndex(), readableBytes()); - copiedBuffer.setIndex(0, readableBytes()); - } else { - copiedBuffer.buffer = ChannelBuffers.EMPTY_BUFFER; - } + copiedBuffer.buffer = buffer.copy(index, length); + copiedBuffer.setIndex(0, length); return copiedBuffer; } diff --git a/src/main/java/org/jboss/netty/buffer/SlicedChannelBuffer.java b/src/main/java/org/jboss/netty/buffer/SlicedChannelBuffer.java index 5ebe660e1f..7c865610fb 100644 --- a/src/main/java/org/jboss/netty/buffer/SlicedChannelBuffer.java +++ b/src/main/java/org/jboss/netty/buffer/SlicedChannelBuffer.java @@ -108,6 +108,7 @@ public class SlicedChannelBuffer extends AbstractChannelBuffer implements Wrappe } public ChannelBuffer copy(int index, int length) { + checkIndex(index, length); return buffer.copy(index + adjustment, length); } diff --git a/src/main/java/org/jboss/netty/buffer/TruncatedChannelBuffer.java b/src/main/java/org/jboss/netty/buffer/TruncatedChannelBuffer.java index 00ac439ad8..237e894bfd 100644 --- a/src/main/java/org/jboss/netty/buffer/TruncatedChannelBuffer.java +++ b/src/main/java/org/jboss/netty/buffer/TruncatedChannelBuffer.java @@ -102,6 +102,7 @@ public class TruncatedChannelBuffer extends AbstractChannelBuffer implements Wra } public ChannelBuffer copy(int index, int length) { + checkIndex(index, length); return buffer.copy(index, length); } diff --git a/src/test/java/org/jboss/netty/buffer/AbstractChannelBufferTest.java b/src/test/java/org/jboss/netty/buffer/AbstractChannelBufferTest.java index 5e5bdad275..35ae8e850b 100644 --- a/src/test/java/org/jboss/netty/buffer/AbstractChannelBufferTest.java +++ b/src/test/java/org/jboss/netty/buffer/AbstractChannelBufferTest.java @@ -249,6 +249,26 @@ public abstract class AbstractChannelBufferTest { buffer.getBytes(-1, ByteBuffer.allocate(0)); } + @Test(expected=IndexOutOfBoundsException.class) + public void copyBoundaryCheck1() { + buffer.copy(-1, 0); + } + + @Test(expected=IndexOutOfBoundsException.class) + public void copyBoundaryCheck2() { + buffer.copy(0, buffer.capacity() + 1); + } + + @Test(expected=IndexOutOfBoundsException.class) + public void copyBoundaryCheck3() { + buffer.copy(buffer.capacity() + 1, 0); + } + + @Test(expected=IndexOutOfBoundsException.class) + public void copyBoundaryCheck4() { + buffer.copy(buffer.capacity(), 1); + } + @Test(expected=IndexOutOfBoundsException.class) public void setIndexBoundaryCheck1() { buffer.setIndex(-1, CAPACITY); diff --git a/src/test/java/org/jboss/netty/buffer/BigEndianHeapChannelBufferTest.java b/src/test/java/org/jboss/netty/buffer/BigEndianHeapChannelBufferTest.java index 1785d34268..48172b9abd 100644 --- a/src/test/java/org/jboss/netty/buffer/BigEndianHeapChannelBufferTest.java +++ b/src/test/java/org/jboss/netty/buffer/BigEndianHeapChannelBufferTest.java @@ -24,6 +24,8 @@ package org.jboss.netty.buffer; import static org.junit.Assert.*; +import org.junit.Test; + /** * * @author The Netty Project (netty-dev@lists.jboss.org) @@ -46,4 +48,9 @@ public class BigEndianHeapChannelBufferTest extends AbstractChannelBufferTest { protected ChannelBuffer[] components() { return new ChannelBuffer[] { buffer }; } + + @Test(expected = NullPointerException.class) + public void shouldNotAllowNullInConstructor() { + new BigEndianHeapChannelBuffer(null); + } } diff --git a/src/test/java/org/jboss/netty/buffer/ByteBufferBackedHeapChannelBufferTest.java b/src/test/java/org/jboss/netty/buffer/ByteBufferBackedHeapChannelBufferTest.java index e7af48160c..fa988f6556 100644 --- a/src/test/java/org/jboss/netty/buffer/ByteBufferBackedHeapChannelBufferTest.java +++ b/src/test/java/org/jboss/netty/buffer/ByteBufferBackedHeapChannelBufferTest.java @@ -24,6 +24,8 @@ package org.jboss.netty.buffer; import java.nio.ByteBuffer; +import org.junit.Test; + /** * * @author The Netty Project (netty-dev@lists.jboss.org) @@ -45,4 +47,9 @@ public class ByteBufferBackedHeapChannelBufferTest extends AbstractChannelBuffer protected ChannelBuffer[] components() { return new ChannelBuffer[] { buffer }; } + + @Test(expected = NullPointerException.class) + public void shouldNotAllowNullInConstructor() { + new ByteBufferBackedChannelBuffer(null); + } } diff --git a/src/test/java/org/jboss/netty/buffer/DuplicateChannelBufferTest.java b/src/test/java/org/jboss/netty/buffer/DuplicateChannelBufferTest.java index 0e712e3d4f..44193522f0 100644 --- a/src/test/java/org/jboss/netty/buffer/DuplicateChannelBufferTest.java +++ b/src/test/java/org/jboss/netty/buffer/DuplicateChannelBufferTest.java @@ -24,6 +24,8 @@ package org.jboss.netty.buffer; import static org.junit.Assert.*; +import org.junit.Test; + /** * * @author The Netty Project (netty-dev@lists.jboss.org) @@ -46,4 +48,9 @@ public class DuplicateChannelBufferTest extends AbstractChannelBufferTest { protected ChannelBuffer[] components() { return new ChannelBuffer[] { buffer }; } + + @Test(expected = NullPointerException.class) + public void shouldNotAllowNullInConstructor() { + new DuplicatedChannelBuffer(null); + } } diff --git a/src/test/java/org/jboss/netty/buffer/DynamicChannelBufferTest.java b/src/test/java/org/jboss/netty/buffer/DynamicChannelBufferTest.java index 445f392794..262e043ac0 100644 --- a/src/test/java/org/jboss/netty/buffer/DynamicChannelBufferTest.java +++ b/src/test/java/org/jboss/netty/buffer/DynamicChannelBufferTest.java @@ -24,6 +24,8 @@ package org.jboss.netty.buffer; import static org.junit.Assert.*; +import org.junit.Test; + /** * * @author The Netty Project (netty-dev@lists.jboss.org) @@ -57,4 +59,9 @@ public class DynamicChannelBufferTest extends AbstractChannelBufferTest { protected ChannelBuffer[] components() { return new ChannelBuffer[] { buffer }; } + + @Test(expected = NullPointerException.class) + public void shouldNotAllowNullInConstructor() { + new DynamicChannelBuffer(null, 0); + } } diff --git a/src/test/java/org/jboss/netty/buffer/LittleEndianHeapChannelBufferTest.java b/src/test/java/org/jboss/netty/buffer/LittleEndianHeapChannelBufferTest.java index 3a55a277ce..f987771fcf 100644 --- a/src/test/java/org/jboss/netty/buffer/LittleEndianHeapChannelBufferTest.java +++ b/src/test/java/org/jboss/netty/buffer/LittleEndianHeapChannelBufferTest.java @@ -26,6 +26,8 @@ import static org.junit.Assert.*; import java.nio.ByteOrder; +import org.junit.Test; + /** * * @author The Netty Project (netty-dev@lists.jboss.org) @@ -48,4 +50,9 @@ public class LittleEndianHeapChannelBufferTest extends AbstractChannelBufferTest protected ChannelBuffer[] components() { return new ChannelBuffer[] { buffer }; } + + @Test(expected = NullPointerException.class) + public void shouldNotAllowNullInConstructor() { + new LittleEndianHeapChannelBuffer(null); + } } diff --git a/src/test/java/org/jboss/netty/buffer/SlicedChannelBufferTest.java b/src/test/java/org/jboss/netty/buffer/SlicedChannelBufferTest.java index 94ad696d5f..3443d243c0 100644 --- a/src/test/java/org/jboss/netty/buffer/SlicedChannelBufferTest.java +++ b/src/test/java/org/jboss/netty/buffer/SlicedChannelBufferTest.java @@ -26,6 +26,8 @@ import static org.junit.Assert.*; import java.util.Random; +import org.junit.Test; + /** * * @author The Netty Project (netty-dev@lists.jboss.org) @@ -50,4 +52,9 @@ public class SlicedChannelBufferTest extends AbstractChannelBufferTest { protected ChannelBuffer[] components() { return new ChannelBuffer[] { buffer }; } + + @Test(expected = NullPointerException.class) + public void shouldNotAllowNullInConstructor() { + new SlicedChannelBuffer(null, 0, 0); + } } diff --git a/src/test/java/org/jboss/netty/buffer/TruncatedChannelBufferTest.java b/src/test/java/org/jboss/netty/buffer/TruncatedChannelBufferTest.java index fba6f6fe2f..f816e4b949 100644 --- a/src/test/java/org/jboss/netty/buffer/TruncatedChannelBufferTest.java +++ b/src/test/java/org/jboss/netty/buffer/TruncatedChannelBufferTest.java @@ -24,6 +24,8 @@ package org.jboss.netty.buffer; import static org.junit.Assert.*; +import org.junit.Test; + /** * * @author The Netty Project (netty-dev@lists.jboss.org) @@ -47,4 +49,9 @@ public class TruncatedChannelBufferTest extends AbstractChannelBufferTest { protected ChannelBuffer[] components() { return new ChannelBuffer[] { buffer }; } + + @Test(expected = NullPointerException.class) + public void shouldNotAllowNullInConstructor() { + new TruncatedChannelBuffer(null, 0); + } }