提交 106bda72 编写于 作者: S Sebastien Deleuze

Fix NettyDataBuffer#lastIndexOf()

上级 8acceba6
...@@ -91,7 +91,7 @@ public class NettyDataBuffer implements PooledDataBuffer { ...@@ -91,7 +91,7 @@ public class NettyDataBuffer implements PooledDataBuffer {
return -1; return -1;
} }
fromIndex = Math.min(fromIndex, this.byteBuf.writerIndex() - 1); fromIndex = Math.min(fromIndex, this.byteBuf.writerIndex() - 1);
return this.byteBuf.forEachByteDesc(0, fromIndex, predicate.negate()::test); return this.byteBuf.forEachByteDesc(0, fromIndex + 1, predicate.negate()::test);
} }
@Override @Override
......
...@@ -210,15 +210,24 @@ public class DataBufferTests extends AbstractDataBufferAllocatingTestCase { ...@@ -210,15 +210,24 @@ public class DataBufferTests extends AbstractDataBufferAllocatingTestCase {
DataBuffer buffer = createDataBuffer(3); DataBuffer buffer = createDataBuffer(3);
buffer.write(new byte[]{'a', 'b', 'c'}); buffer.write(new byte[]{'a', 'b', 'c'});
int result = buffer.lastIndexOf(b -> b == 'b', 3); int result = buffer.lastIndexOf(b -> b == 'b', 2);
assertEquals(1, result); assertEquals(1, result);
result = buffer.lastIndexOf(b -> b == 'c', 2);
assertEquals(2, result);
result = buffer.lastIndexOf(b -> b == 'b', Integer.MAX_VALUE); result = buffer.lastIndexOf(b -> b == 'b', Integer.MAX_VALUE);
assertEquals(1, result); assertEquals(1, result);
result = buffer.lastIndexOf(b -> b == 'c', Integer.MAX_VALUE);
assertEquals(2, result);
result = buffer.lastIndexOf(b -> b == 'b', Integer.MIN_VALUE); result = buffer.lastIndexOf(b -> b == 'b', Integer.MIN_VALUE);
assertEquals(-1, result); assertEquals(-1, result);
result = buffer.lastIndexOf(b -> b == 'c', Integer.MIN_VALUE);
assertEquals(-1, result);
result = buffer.lastIndexOf(b -> b == 'z', 0); result = buffer.lastIndexOf(b -> b == 'z', 0);
assertEquals(-1, result); assertEquals(-1, result);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册