fn primitive_type_serde()

in crates/iceberg/src/spec/datatypes.rs [838:943]


    fn primitive_type_serde() {
        let record = r#"
    {
        "type": "struct",
        "fields": [
            {"id": 1, "name": "bool_field", "required": true, "type": "boolean"},
            {"id": 2, "name": "int_field", "required": true, "type": "int"},
            {"id": 3, "name": "long_field", "required": true, "type": "long"},
            {"id": 4, "name": "float_field", "required": true, "type": "float"},
            {"id": 5, "name": "double_field", "required": true, "type": "double"},
            {"id": 6, "name": "decimal_field", "required": true, "type": "decimal(9,2)"},
            {"id": 7, "name": "date_field", "required": true, "type": "date"},
            {"id": 8, "name": "time_field", "required": true, "type": "time"},
            {"id": 9, "name": "timestamp_field", "required": true, "type": "timestamp"},
            {"id": 10, "name": "timestamptz_field", "required": true, "type": "timestamptz"},
            {"id": 11, "name": "timestamp_ns_field", "required": true, "type": "timestamp_ns"},
            {"id": 12, "name": "timestamptz_ns_field", "required": true, "type": "timestamptz_ns"},
            {"id": 13, "name": "uuid_field", "required": true, "type": "uuid"},
            {"id": 14, "name": "fixed_field", "required": true, "type": "fixed[10]"},
            {"id": 15, "name": "binary_field", "required": true, "type": "binary"},
            {"id": 16, "name": "string_field", "required": true, "type": "string"}
        ]
    }
    "#;

        check_type_serde(
            record,
            Type::Struct(StructType {
                fields: vec![
                    NestedField::required(1, "bool_field", Type::Primitive(PrimitiveType::Boolean))
                        .into(),
                    NestedField::required(2, "int_field", Type::Primitive(PrimitiveType::Int))
                        .into(),
                    NestedField::required(3, "long_field", Type::Primitive(PrimitiveType::Long))
                        .into(),
                    NestedField::required(4, "float_field", Type::Primitive(PrimitiveType::Float))
                        .into(),
                    NestedField::required(
                        5,
                        "double_field",
                        Type::Primitive(PrimitiveType::Double),
                    )
                    .into(),
                    NestedField::required(
                        6,
                        "decimal_field",
                        Type::Primitive(PrimitiveType::Decimal {
                            precision: 9,
                            scale: 2,
                        }),
                    )
                    .into(),
                    NestedField::required(7, "date_field", Type::Primitive(PrimitiveType::Date))
                        .into(),
                    NestedField::required(8, "time_field", Type::Primitive(PrimitiveType::Time))
                        .into(),
                    NestedField::required(
                        9,
                        "timestamp_field",
                        Type::Primitive(PrimitiveType::Timestamp),
                    )
                    .into(),
                    NestedField::required(
                        10,
                        "timestamptz_field",
                        Type::Primitive(PrimitiveType::Timestamptz),
                    )
                    .into(),
                    NestedField::required(
                        11,
                        "timestamp_ns_field",
                        Type::Primitive(PrimitiveType::TimestampNs),
                    )
                    .into(),
                    NestedField::required(
                        12,
                        "timestamptz_ns_field",
                        Type::Primitive(PrimitiveType::TimestamptzNs),
                    )
                    .into(),
                    NestedField::required(13, "uuid_field", Type::Primitive(PrimitiveType::Uuid))
                        .into(),
                    NestedField::required(
                        14,
                        "fixed_field",
                        Type::Primitive(PrimitiveType::Fixed(10)),
                    )
                    .into(),
                    NestedField::required(
                        15,
                        "binary_field",
                        Type::Primitive(PrimitiveType::Binary),
                    )
                    .into(),
                    NestedField::required(
                        16,
                        "string_field",
                        Type::Primitive(PrimitiveType::String),
                    )
                    .into(),
                ],
                id_lookup: OnceLock::default(),
                name_lookup: OnceLock::default(),
            }),
        )
    }