public void testCasting(TypeName inputType, TypeName outputType) { Object output = Cast.castValue(NUMERICS.get(inputType), FieldType.of(inputType), FieldType.of(outputType)); assertEquals(NUMERICS.get(outputType), output); }
@Test public void testCastArray() { Object output = Cast.castValue( Arrays.asList((short) 1, (short) 2, (short) 3), Schema.FieldType.array(Schema.FieldType.INT16), Schema.FieldType.array(Schema.FieldType.INT32)); assertEquals(Arrays.asList(1, 2, 3), output); }
public static Row castRow(Row input, Schema inputSchema, Schema outputSchema) { if (input == null) { return null; } Row.Builder output = Row.withSchema(outputSchema); for (int i = 0; i < outputSchema.getFieldCount(); i++) { Schema.Field outputField = outputSchema.getField(i); int fromFieldIdx = inputSchema.indexOf(outputField.getName()); Schema.Field inputField = inputSchema.getField(fromFieldIdx); Object inputValue = input.getValue(fromFieldIdx); Object outputValue = castValue(inputValue, inputField.getType(), outputField.getType()); output.addValue(outputValue); } return output.build(); }
@Test public void testCastMap() { Object output = Cast.castValue( ImmutableMap.of((short) 1, 1, (short) 2, 2, (short) 3, 3), Schema.FieldType.map(Schema.FieldType.INT16, Schema.FieldType.INT32), Schema.FieldType.map(Schema.FieldType.INT32, Schema.FieldType.INT64)); assertEquals(ImmutableMap.of(1, 1L, 2, 2L, 3, 3L), output); }