fn test_print_logical_types()

in parquet/src/schema/printer.rs [528:789]


    fn test_print_logical_types() {
        let types_and_strings = vec![
            (
                build_primitive_type(
                    "field",
                    None,
                    PhysicalType::INT32,
                    Some(LogicalType::Integer {
                        bit_width: 32,
                        is_signed: true,
                    }),
                    ConvertedType::NONE,
                    Repetition::REQUIRED,
                )
                .unwrap(),
                "REQUIRED INT32 field (INTEGER(32,true));",
            ),
            (
                build_primitive_type(
                    "field",
                    None,
                    PhysicalType::INT32,
                    Some(LogicalType::Integer {
                        bit_width: 8,
                        is_signed: false,
                    }),
                    ConvertedType::NONE,
                    Repetition::OPTIONAL,
                )
                .unwrap(),
                "OPTIONAL INT32 field (INTEGER(8,false));",
            ),
            (
                build_primitive_type(
                    "field",
                    None,
                    PhysicalType::INT32,
                    Some(LogicalType::Integer {
                        bit_width: 16,
                        is_signed: true,
                    }),
                    ConvertedType::INT_16,
                    Repetition::REPEATED,
                )
                .unwrap(),
                "REPEATED INT32 field (INTEGER(16,true));",
            ),
            (
                build_primitive_type(
                    "field",
                    Some(42),
                    PhysicalType::INT32,
                    Some(LogicalType::Integer {
                        bit_width: 16,
                        is_signed: true,
                    }),
                    ConvertedType::INT_16,
                    Repetition::REPEATED,
                )
                .unwrap(),
                "REPEATED INT32 field [42] (INTEGER(16,true));",
            ),
            (
                build_primitive_type(
                    "field",
                    None,
                    PhysicalType::INT64,
                    None,
                    ConvertedType::NONE,
                    Repetition::REPEATED,
                )
                .unwrap(),
                "REPEATED INT64 field;",
            ),
            (
                build_primitive_type(
                    "field",
                    None,
                    PhysicalType::FLOAT,
                    None,
                    ConvertedType::NONE,
                    Repetition::REQUIRED,
                )
                .unwrap(),
                "REQUIRED FLOAT field;",
            ),
            (
                build_primitive_type(
                    "booleans",
                    None,
                    PhysicalType::BOOLEAN,
                    None,
                    ConvertedType::NONE,
                    Repetition::OPTIONAL,
                )
                .unwrap(),
                "OPTIONAL BOOLEAN booleans;",
            ),
            (
                build_primitive_type(
                    "booleans",
                    Some(42),
                    PhysicalType::BOOLEAN,
                    None,
                    ConvertedType::NONE,
                    Repetition::OPTIONAL,
                )
                .unwrap(),
                "OPTIONAL BOOLEAN booleans [42];",
            ),
            (
                build_primitive_type(
                    "field",
                    None,
                    PhysicalType::INT64,
                    Some(LogicalType::Timestamp {
                        is_adjusted_to_u_t_c: true,
                        unit: TimeUnit::MILLIS(Default::default()),
                    }),
                    ConvertedType::NONE,
                    Repetition::REQUIRED,
                )
                .unwrap(),
                "REQUIRED INT64 field (TIMESTAMP(MILLIS,true));",
            ),
            (
                build_primitive_type(
                    "field",
                    None,
                    PhysicalType::INT32,
                    Some(LogicalType::Date),
                    ConvertedType::NONE,
                    Repetition::OPTIONAL,
                )
                .unwrap(),
                "OPTIONAL INT32 field (DATE);",
            ),
            (
                build_primitive_type(
                    "field",
                    None,
                    PhysicalType::INT32,
                    Some(LogicalType::Time {
                        unit: TimeUnit::MILLIS(Default::default()),
                        is_adjusted_to_u_t_c: false,
                    }),
                    ConvertedType::TIME_MILLIS,
                    Repetition::REQUIRED,
                )
                .unwrap(),
                "REQUIRED INT32 field (TIME(MILLIS,false));",
            ),
            (
                build_primitive_type(
                    "field",
                    Some(42),
                    PhysicalType::INT32,
                    Some(LogicalType::Time {
                        unit: TimeUnit::MILLIS(Default::default()),
                        is_adjusted_to_u_t_c: false,
                    }),
                    ConvertedType::TIME_MILLIS,
                    Repetition::REQUIRED,
                )
                .unwrap(),
                "REQUIRED INT32 field [42] (TIME(MILLIS,false));",
            ),
            (
                build_primitive_type(
                    "field",
                    None,
                    PhysicalType::BYTE_ARRAY,
                    None,
                    ConvertedType::NONE,
                    Repetition::REQUIRED,
                )
                .unwrap(),
                "REQUIRED BYTE_ARRAY field;",
            ),
            (
                build_primitive_type(
                    "field",
                    Some(42),
                    PhysicalType::BYTE_ARRAY,
                    None,
                    ConvertedType::NONE,
                    Repetition::REQUIRED,
                )
                .unwrap(),
                "REQUIRED BYTE_ARRAY field [42];",
            ),
            (
                build_primitive_type(
                    "field",
                    None,
                    PhysicalType::BYTE_ARRAY,
                    None,
                    ConvertedType::UTF8,
                    Repetition::REQUIRED,
                )
                .unwrap(),
                "REQUIRED BYTE_ARRAY field (UTF8);",
            ),
            (
                build_primitive_type(
                    "field",
                    None,
                    PhysicalType::BYTE_ARRAY,
                    Some(LogicalType::Json),
                    ConvertedType::JSON,
                    Repetition::REQUIRED,
                )
                .unwrap(),
                "REQUIRED BYTE_ARRAY field (JSON);",
            ),
            (
                build_primitive_type(
                    "field",
                    None,
                    PhysicalType::BYTE_ARRAY,
                    Some(LogicalType::Bson),
                    ConvertedType::BSON,
                    Repetition::REQUIRED,
                )
                .unwrap(),
                "REQUIRED BYTE_ARRAY field (BSON);",
            ),
            (
                build_primitive_type(
                    "field",
                    None,
                    PhysicalType::BYTE_ARRAY,
                    Some(LogicalType::String),
                    ConvertedType::NONE,
                    Repetition::REQUIRED,
                )
                .unwrap(),
                "REQUIRED BYTE_ARRAY field (STRING);",
            ),
            (
                build_primitive_type(
                    "field",
                    Some(42),
                    PhysicalType::BYTE_ARRAY,
                    Some(LogicalType::String),
                    ConvertedType::NONE,
                    Repetition::REQUIRED,
                )
                .unwrap(),
                "REQUIRED BYTE_ARRAY field [42] (STRING);",
            ),
        ];

        types_and_strings.into_iter().for_each(|(field, expected)| {
            let mut s = String::new();
            {
                let mut p = Printer::new(&mut s);
                p.print(&field);
            }
            assert_eq!(&s, expected)
        });
    }