@Test
public void testMergeDifferentSize1() throws Throwable {
// Generate two schemas
List<FieldSchema> innerList1 = new ArrayList<FieldSchema>() ;
innerList1.add(new FieldSchema("11a", DataType.INTEGER)) ;
innerList1.add(new FieldSchema("11b", DataType.FLOAT)) ;
innerList1.add(new FieldSchema("11c", DataType.CHARARRAY)) ;
List<FieldSchema> innerList2 = new ArrayList<FieldSchema>() ;
innerList2.add(new FieldSchema("22a", DataType.DOUBLE)) ;
innerList2.add(new FieldSchema(null, DataType.LONG)) ;
Schema innerSchema1 = new Schema(innerList1) ;
Schema innerSchema2 = new Schema(innerList2) ;
List<FieldSchema> list1 = new ArrayList<FieldSchema>() ;
list1.add(new FieldSchema("1a", DataType.BYTEARRAY)) ;
list1.add(new FieldSchema("1b", innerSchema1)) ;
list1.add(new FieldSchema("1c", DataType.LONG)) ;
List<FieldSchema> list2 = new ArrayList<FieldSchema>() ;
list2.add(new FieldSchema("2a", DataType.BYTEARRAY)) ;
list2.add(new FieldSchema("2b", innerSchema2)) ;
list2.add(new FieldSchema("2c", DataType.INTEGER)) ;
list2.add(new FieldSchema("2d", DataType.MAP)) ;
Schema schema1 = new Schema(list1) ;
Schema schema2 = new Schema(list2) ;
// Merge
Schema mergedSchema = Schema.mergeSchema(schema1,
schema2,
true,
true,
false) ;
// Generate expected schema
List<FieldSchema> expectedInnerList = new ArrayList<FieldSchema>() ;
expectedInnerList.add(new FieldSchema("22a", DataType.DOUBLE)) ;
expectedInnerList.add(new FieldSchema("11b", DataType.FLOAT)) ;
expectedInnerList.add(new FieldSchema("11c", DataType.CHARARRAY)) ;
Schema expectedInner = new Schema(expectedInnerList) ;
List<FieldSchema> expectedList = new ArrayList<FieldSchema>() ;
expectedList.add(new FieldSchema("2a", DataType.BYTEARRAY)) ;
expectedList.add(new FieldSchema("2b", expectedInner)) ;
expectedList.add(new FieldSchema("2c", DataType.LONG)) ;
expectedList.add(new FieldSchema("2d", DataType.MAP)) ;
Schema expected = new Schema(expectedList) ;
// Compare
Assert.assertTrue(Schema.equals(mergedSchema, expected, false, false)) ;