public static void assertEquals(Types.ListType list, List<?> expected, List<?> actual) { Type elementType = list.elementType(); Assert.assertEquals("List size should match", expected.size(), actual.size()); for (int i = 0; i < expected.size(); i += 1) { Object expectedValue = expected.get(i); Object actualValue = actual.get(i); assertEquals(elementType, expectedValue, actualValue); } }
public static void assertEquals(Types.MapType map, Map<?, ?> expected, Map<?, ?> actual) { Type valueType = map.valueType(); Assert.assertEquals("Map size should match", expected.size(), actual.size()); for (Object expectedKey : expected.keySet()) { Object expectedValue = expected.get(expectedKey); Object actualValue = actual.get(expectedKey); assertEquals(valueType, expectedValue, actualValue); } }
public static void assertEquals(Types.StructType struct, Record expected, Record actual) { List<Types.NestedField> fields = struct.fields(); for (int i = 0; i < fields.size(); i += 1) { Type fieldType = fields.get(i).type(); Object expectedValue = expected.get(i); Object actualValue = actual.get(i); assertEquals(fieldType, expectedValue, actualValue); } }
protected void writeAndValidate(Schema schema) throws IOException { List<Record> expected = RandomGenericData.generate(schema, 100, 0L); File testFile = temp.newFile(); Assert.assertTrue("Delete should succeed", testFile.delete()); try (FileAppender<Record> appender = Parquet.write(Files.localOutput(testFile)) .schema(schema) .createWriterFunc(GenericParquetWriter::buildWriter) .build()) { appender.addAll(expected); } List<Record> rows; try (CloseableIterable<Record> reader = Parquet.read(Files.localInput(testFile)) .project(schema) .createReaderFunc(fileSchema -> GenericParquetReaders.buildReader(schema, fileSchema)) .build()) { rows = Lists.newArrayList(reader); } for (int i = 0; i < expected.size(); i += 1) { DataTestHelpers.assertEquals(schema.asStruct(), expected.get(i), rows.get(i)); } } }
Assert.assertTrue("Expected should be a Record", expected instanceof Record); Assert.assertTrue("Actual should be a Record", actual instanceof Record); assertEquals(type.asStructType(), (Record) expected, (Record) actual); break; case LIST: Assert.assertTrue("Expected should be a List", expected instanceof List); Assert.assertTrue("Actual should be a List", actual instanceof List); assertEquals(type.asListType(), (List) expected, (List) actual); break; case MAP: Assert.assertTrue("Expected should be a Map", expected instanceof Map); Assert.assertTrue("Actual should be a Map", actual instanceof Map); assertEquals(type.asMapType(), (Map<?, ?>) expected, (Map<?, ?>) actual); break; default:
protected void writeAndValidate(Schema schema) throws IOException { List<Record> expected = RandomGenericData.generate(schema, 100, 0L); File testFile = temp.newFile(); Assert.assertTrue("Delete should succeed", testFile.delete()); try (FileAppender<Record> writer = Avro.write(Files.localOutput(testFile)) .schema(schema) .createWriterFunc(DataWriter::create) .named("test") .build()) { for (Record rec : expected) { writer.add(rec); } } List<Record> rows; try (AvroIterable<Record> reader = Avro.read(Files.localInput(testFile)) .project(schema) .createReaderFunc(DataReader::create) .build()) { rows = Lists.newArrayList(reader); } for (int i = 0; i < expected.size(); i += 1) { DataTestHelpers.assertEquals(schema.asStruct(), expected.get(i), rows.get(i)); } } }