private static <T> void verifyBlock(Block block, T[] expectedValues) { assertBlock(block, expectedValues); assertColumnarRow(block, expectedValues); assertDictionaryBlock(block, expectedValues); assertRunLengthEncodedBlock(block, expectedValues); int offset = 1; int length = expectedValues.length - 2; Block blockRegion = block.getRegion(offset, length); T[] expectedValuesRegion = Arrays.copyOfRange(expectedValues, offset, offset + length); assertBlock(blockRegion, expectedValuesRegion); assertColumnarRow(blockRegion, expectedValuesRegion); assertDictionaryBlock(blockRegion, expectedValuesRegion); assertRunLengthEncodedBlock(blockRegion, expectedValuesRegion); }
@Test public void test() { Slice[][] expectedValues = new Slice[POSITION_COUNT][]; for (int i = 0; i < POSITION_COUNT; i++) { expectedValues[i] = new Slice[FIELD_COUNT]; for (int j = 0; j < FIELD_COUNT; j++) { if (j % 3 != 1) { expectedValues[i][j] = Slices.utf8Slice(String.format("%d.%d", i, j)); } } } BlockBuilder blockBuilder = createBlockBuilderWithValues(expectedValues); verifyBlock(blockBuilder, expectedValues); verifyBlock(blockBuilder.build(), expectedValues); Slice[][] expectedValuesWithNull = alternatingNullValues(expectedValues); BlockBuilder blockBuilderWithNull = createBlockBuilderWithValues(expectedValuesWithNull); verifyBlock(blockBuilderWithNull, expectedValuesWithNull); verifyBlock(blockBuilderWithNull.build(), expectedValuesWithNull); }
private static <T> void assertDictionaryBlock(Block block, T[] expectedValues) { DictionaryBlock dictionaryBlock = createTestDictionaryBlock(block); T[] expectedDictionaryValues = createTestDictionaryExpectedValues(expectedValues); assertBlock(dictionaryBlock, expectedDictionaryValues); assertColumnarRow(dictionaryBlock, expectedDictionaryValues); assertRunLengthEncodedBlock(dictionaryBlock, expectedDictionaryValues); }
private static <T> void assertRunLengthEncodedBlock(Block block, T[] expectedValues) { for (int position = 0; position < block.getPositionCount(); position++) { RunLengthEncodedBlock runLengthEncodedBlock = createTestRleBlock(block, position); T[] expectedDictionaryValues = createTestRleExpectedValues(expectedValues, position); assertBlock(runLengthEncodedBlock, expectedDictionaryValues); assertColumnarRow(runLengthEncodedBlock, expectedDictionaryValues); } }
public static BlockBuilder createBlockBuilderWithValues(Slice[][] expectedValues) { BlockBuilder blockBuilder = createBlockBuilder(null, 100, 100); for (Slice[] expectedValue : expectedValues) { if (expectedValue == null) { blockBuilder.appendNull(); } else { BlockBuilder entryBuilder = blockBuilder.beginBlockEntry(); for (Slice v : expectedValue) { if (v == null) { entryBuilder.appendNull(); } else { VARCHAR.writeSlice(entryBuilder, v); } } blockBuilder.closeEntry(); } } return blockBuilder; }