@Test public void testStruct() throws Exception { runTest( "test_flat_map/flat_map_struct.dwrf", IntegerType.INTEGER, STRUCT_TYPE, ExpectedValuesBuilder.get(Function.identity(), TestFlatMap::intToList)); }
public List<Map<K, V>> build() { List<Map<K, V>> result = new ArrayList<>(NUM_ROWS); for (int i = 0; i < NUM_ROWS; ++i) { if (passesFrequencyCheck(nullRowsFrequency, i)) { result.add((Map<K, V>) null); } else if (passesFrequencyCheck(emptyMapsFrequency, i)) { result.add(Collections.emptyMap()); } else { Map<K, V> row = new HashMap<>(); row.put(keyConverter.apply(i * 3 % 32), passesFrequencyCheck(nullValuesFrequency, i) ? null : valueConverter.apply(i * 3 % 32)); row.put(keyConverter.apply((i * 3 + 1) % 32), valueConverter.apply((i * 3 + 1) % 32)); row.put(keyConverter.apply((i * 3 + 2) % 32), valueConverter.apply((i * 3 + 2) % 32)); result.add(row); } } return result; }
@Test public void testWithAllMaps() throws Exception { // A test case where all of the flat maps are empty runTest( "test_flat_map/flat_map_all_empty_maps.dwrf", IntegerType.INTEGER, ExpectedValuesBuilder.get(Function.identity()).setEmptyMapsFrequency(ALL)); }
public List<Map<K, V>> build() { List<Map<K, V>> result = new ArrayList<>(NUM_ROWS); for (int i = 0; i < NUM_ROWS; ++i) { if (passesFrequencyCheck(nullRowsFrequency, i)) { result.add((Map<K, V>) null); } else if (passesFrequencyCheck(emptyMapsFrequency, i)) { result.add(Collections.emptyMap()); } else { Map<K, V> row = new HashMap<>(); row.put(keyConverter.apply(i * 3 % 32), passesFrequencyCheck(nullValuesFrequency, i) ? null : valueConverter.apply(i * 3 % 32)); row.put(keyConverter.apply((i * 3 + 1) % 32), valueConverter.apply((i * 3 + 1) % 32)); row.put(keyConverter.apply((i * 3 + 2) % 32), valueConverter.apply((i * 3 + 2) % 32)); result.add(row); } } return result; }
public static <T> ExpectedValuesBuilder<T, T> get(Function<Integer, T> converter) { return new ExpectedValuesBuilder<>(converter, converter); }
public static <T> ExpectedValuesBuilder<T, T> get(Function<Integer, T> converter) { return new ExpectedValuesBuilder<>(converter, converter); }
public static <K, V> ExpectedValuesBuilder<K, V> get(Function<Integer, K> keyConverter, Function<Integer, V> valueConverter) { return new ExpectedValuesBuilder<>(keyConverter, valueConverter); }
public static <K, V> ExpectedValuesBuilder<K, V> get(Function<Integer, K> keyConverter, Function<Integer, V> valueConverter) { return new ExpectedValuesBuilder<>(keyConverter, valueConverter); }
@Test public void testBinary() throws Exception { runTest("test_flat_map/flat_map_binary.dwrf", VarbinaryType.VARBINARY, ExpectedValuesBuilder.get(i -> new SqlVarbinary(Integer.toString(i).getBytes(StandardCharsets.UTF_8)))); }
@Test public void testLong() throws Exception { runTest("test_flat_map/flat_map_long.dwrf", BigintType.BIGINT, ExpectedValuesBuilder.get(Integer::longValue)); }
private <K, V> void runTest(String testOrcFileName, Type keyType, Type valueType, ExpectedValuesBuilder<K, V> expectedValuesBuilder) throws Exception { List<Map<K, V>> expectedValues = expectedValuesBuilder.build(); runTest(testOrcFileName, keyType, valueType, expectedValues, false, false); runTest(testOrcFileName, keyType, valueType, expectedValues, true, false); runTest(testOrcFileName, keyType, valueType, expectedValues, false, true); }
@Test public void testMap() throws Exception { runTest( "test_flat_map/flat_map_map.dwrf", IntegerType.INTEGER, MAP_TYPE, ExpectedValuesBuilder.get(Function.identity(), TestFlatMap::intToMap)); }
@Test public void testString() throws Exception { runTest("test_flat_map/flat_map_string.dwrf", VarcharType.VARCHAR, ExpectedValuesBuilder.get(i -> Integer.toString(i))); }
@Test public void testByte() throws Exception { runTest("test_flat_map/flat_map_byte.dwrf", TinyintType.TINYINT, ExpectedValuesBuilder.get(Integer::byteValue)); }
@Test public void testStructWithNull() throws Exception { runTest( "test_flat_map/flat_map_struct_with_null.dwrf", IntegerType.INTEGER, STRUCT_TYPE, ExpectedValuesBuilder.get(Function.identity(), TestFlatMap::intToList).setNullValuesFrequency(SOME)); }
@Test public void testIntegerWithNull() throws Exception { runTest("test_flat_map/flat_map_int_with_null.dwrf", IntegerType.INTEGER, ExpectedValuesBuilder.get(Function.identity()).setNullValuesFrequency(SOME)); }
@Test public void testStruct() throws Exception { runTest( "test_flat_map/flat_map_struct.dwrf", IntegerType.INTEGER, STRUCT_TYPE, ExpectedValuesBuilder.get(Function.identity(), TestFlatMap::intToList)); }
@Test public void testList() throws Exception { runTest( "test_flat_map/flat_map_list.dwrf", IntegerType.INTEGER, LIST_TYPE, ExpectedValuesBuilder.get(Function.identity(), TestFlatMap::intToList)); }
@Test public void testDouble() throws Exception { runTest("test_flat_map/flat_map_double.dwrf", IntegerType.INTEGER, DoubleType.DOUBLE, ExpectedValuesBuilder.get(Function.identity(), Double::valueOf)); }
@Test public void testBinary() throws Exception { runTest("test_flat_map/flat_map_binary.dwrf", VarbinaryType.VARBINARY, ExpectedValuesBuilder.get(i -> new SqlVarbinary(Integer.toString(i).getBytes(StandardCharsets.UTF_8)))); }