|
|
@@ -68,20 +68,21 @@ public abstract class AbstractBytesReferenceTestCase extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
public void testSlice() throws IOException {
|
|
|
- int length = randomInt(PAGE_SIZE * 3);
|
|
|
- BytesReference pbr = newBytesReference(length);
|
|
|
- int sliceOffset = randomIntBetween(0, length / 2);
|
|
|
- int sliceLength = Math.max(0, length - sliceOffset - 1);
|
|
|
- BytesReference slice = pbr.slice(sliceOffset, sliceLength);
|
|
|
- assertEquals(sliceLength, slice.length());
|
|
|
- for (int i = 0; i < sliceLength; i++) {
|
|
|
- assertEquals(pbr.get(i+sliceOffset), slice.get(i));
|
|
|
- }
|
|
|
- BytesRef singlePageOrNull = getSinglePageOrNull(slice);
|
|
|
- if (singlePageOrNull != null) {
|
|
|
- // we can't assert the offset since if the length is smaller than the refercence
|
|
|
- // the offset can be anywhere
|
|
|
- assertEquals(sliceLength, singlePageOrNull.length);
|
|
|
+ for (int length : new int[] {0, 1, randomIntBetween(2, PAGE_SIZE), randomIntBetween(PAGE_SIZE + 1, 3 * PAGE_SIZE)}) {
|
|
|
+ BytesReference pbr = newBytesReference(length);
|
|
|
+ int sliceOffset = randomIntBetween(0, length / 2);
|
|
|
+ int sliceLength = Math.max(0, length - sliceOffset - 1);
|
|
|
+ BytesReference slice = pbr.slice(sliceOffset, sliceLength);
|
|
|
+ assertEquals(sliceLength, slice.length());
|
|
|
+ for (int i = 0; i < sliceLength; i++) {
|
|
|
+ assertEquals(pbr.get(i+sliceOffset), slice.get(i));
|
|
|
+ }
|
|
|
+ BytesRef singlePageOrNull = getSinglePageOrNull(slice);
|
|
|
+ if (singlePageOrNull != null) {
|
|
|
+ // we can't assert the offset since if the length is smaller than the refercence
|
|
|
+ // the offset can be anywhere
|
|
|
+ assertEquals(sliceLength, singlePageOrNull.length);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|