@Test public void testTypeDescriptorsListsOfLists() throws Exception { TypeDescriptor<List<List<String>>> descriptor = lists(lists(strings())); assertEquals(descriptor, new TypeDescriptor<List<List<String>>>() {}); assertNotEquals(descriptor, new TypeDescriptor<List<String>>() {}); assertNotEquals(descriptor, new TypeDescriptor<List<Boolean>>() {}); }
@Test public void testArrayTypeToJavaType() { assertEquals( TypeDescriptors.lists(TypeDescriptors.longs()), FieldTypeDescriptors.javaTypeForFieldType(FieldType.array(FieldType.INT64))); assertEquals( TypeDescriptors.lists(TypeDescriptors.lists(TypeDescriptors.longs())), FieldTypeDescriptors.javaTypeForFieldType( FieldType.array(FieldType.array(FieldType.INT64)))); }
@Test public void testTypeDescriptorsLists() throws Exception { TypeDescriptor<List<String>> descriptor = lists(strings()); assertEquals(descriptor, new TypeDescriptor<List<String>>() {}); assertNotEquals(descriptor, new TypeDescriptor<List<Boolean>>() {}); }
@Test public void testArrayTypeToFieldType() { assertEquals( FieldType.array(FieldType.STRING), FieldTypeDescriptors.fieldTypeForJavaType( TypeDescriptors.lists(TypeDescriptors.strings()))); assertEquals( FieldType.array(FieldType.array(FieldType.STRING)), FieldTypeDescriptors.fieldTypeForJavaType( TypeDescriptors.lists(TypeDescriptors.lists(TypeDescriptors.strings())))); assertEquals( FieldType.array(FieldType.STRING), FieldTypeDescriptors.fieldTypeForJavaType( TypeDescriptor.of(new ArrayList<String>() {}.getClass()))); }
/** * Checks that {#link CoderProviders.fromStaticMethods} successfully builds a working {@link * CoderProvider} from {@link ListCoder ListCoder.class}. */ @Test public void testListCoderProvider() throws Exception { TypeDescriptor<List<Double>> type = TypeDescriptors.lists(TypeDescriptors.doubles()); CoderProvider listCoderProvider = CoderProviders.fromStaticMethods(List.class, ListCoder.class); assertEquals( ListCoder.of(DoubleCoder.of()), listCoderProvider.coderFor(type, Arrays.asList(DoubleCoder.of()))); }
/** Get a {@link TypeDescriptor} from a {@link FieldType}. */ public static TypeDescriptor javaTypeForFieldType(FieldType fieldType) { switch (fieldType.getTypeName()) { case ARRAY: return TypeDescriptors.lists(javaTypeForFieldType(fieldType.getCollectionElementType())); case MAP: return TypeDescriptors.maps( javaTypeForFieldType(fieldType.getMapKeyType()), javaTypeForFieldType(fieldType.getMapValueType())); case ROW: return TypeDescriptors.rows(); default: return PRIMITIVE_MAPPING.get(fieldType.getTypeName()); } } /** Get a {@link FieldType} from a {@link TypeDescriptor}. */
@Test public void testRowTypeToJavaType() { assertEquals( TypeDescriptors.lists(TypeDescriptors.rows()), FieldTypeDescriptors.javaTypeForFieldType( FieldType.array(FieldType.row(Schema.builder().build())))); }
@Test public void testMapTypeToJavaType() { assertEquals( TypeDescriptors.maps(TypeDescriptors.strings(), TypeDescriptors.longs()), FieldTypeDescriptors.javaTypeForFieldType( FieldType.map(FieldType.STRING, FieldType.INT64))); assertEquals( TypeDescriptors.maps( TypeDescriptors.strings(), TypeDescriptors.lists(TypeDescriptors.longs())), FieldTypeDescriptors.javaTypeForFieldType( FieldType.map(FieldType.STRING, FieldType.array(FieldType.INT64)))); }
@Test public void testMapTypeToFieldType() { assertEquals( FieldType.map(FieldType.STRING, FieldType.INT64), FieldTypeDescriptors.fieldTypeForJavaType( TypeDescriptors.maps(TypeDescriptors.strings(), TypeDescriptors.longs()))); assertEquals( FieldType.map(FieldType.STRING, FieldType.array(FieldType.INT64)), FieldTypeDescriptors.fieldTypeForJavaType( TypeDescriptors.maps( TypeDescriptors.strings(), TypeDescriptors.lists(TypeDescriptors.longs())))); } }