ZENOTME commented on code in PR #82:
URL: https://github.com/apache/iceberg-rust/pull/82#discussion_r1368605517


##########
crates/iceberg/src/spec/values.rs:
##########
@@ -1309,4 +1928,256 @@ mod tests {
             &Type::Primitive(PrimitiveType::String),
         );
     }
+
+    #[test]
+    fn avro_convert_test_int() {
+        check_convert_with_avro(
+            Literal::Primitive(PrimitiveLiteral::Int(32)),
+            &Type::Primitive(PrimitiveType::Int),
+        );
+    }
+
+    #[test]
+    fn avro_convert_test_long() {
+        check_convert_with_avro(
+            Literal::Primitive(PrimitiveLiteral::Long(32)),
+            &Type::Primitive(PrimitiveType::Long),
+        );
+    }
+
+    #[test]
+    fn avro_convert_test_float() {
+        check_convert_with_avro(
+            Literal::Primitive(PrimitiveLiteral::Float(OrderedFloat(1.0))),
+            &Type::Primitive(PrimitiveType::Float),
+        );
+    }
+
+    #[test]
+    fn avro_convert_test_double() {
+        check_convert_with_avro(
+            Literal::Primitive(PrimitiveLiteral::Double(OrderedFloat(1.0))),
+            &Type::Primitive(PrimitiveType::Double),
+        );
+    }
+
+    #[test]
+    fn avro_convert_test_string() {
+        check_convert_with_avro(
+            
Literal::Primitive(PrimitiveLiteral::String("iceberg".to_string())),
+            &Type::Primitive(PrimitiveType::String),
+        );
+    }
+
+    #[test]
+    fn avro_convert_test_date() {
+        check_convert_with_avro(
+            Literal::Primitive(PrimitiveLiteral::Date(17486)),
+            &Type::Primitive(PrimitiveType::Date),
+        );
+    }
+
+    #[test]
+    fn avro_convert_test_time() {
+        check_convert_with_avro(
+            Literal::Primitive(PrimitiveLiteral::Time(81068123456)),
+            &Type::Primitive(PrimitiveType::Time),
+        );
+    }
+
+    #[test]
+    fn avro_convert_test_timestamp() {
+        check_convert_with_avro(
+            Literal::Primitive(PrimitiveLiteral::Timestamp(1510871468123456)),
+            &Type::Primitive(PrimitiveType::Timestamp),
+        );
+    }
+
+    #[test]
+    fn avro_convert_test_timestamptz() {
+        check_convert_with_avro(
+            
Literal::Primitive(PrimitiveLiteral::TimestampTZ(1510871468123456)),
+            &Type::Primitive(PrimitiveType::Timestamptz),
+        );
+    }
+
+    #[test]
+    fn avro_convert_test_list() {
+        check_convert_with_avro(
+            Literal::List(vec![
+                Some(Literal::Primitive(PrimitiveLiteral::Int(1))),
+                Some(Literal::Primitive(PrimitiveLiteral::Int(2))),
+                Some(Literal::Primitive(PrimitiveLiteral::Int(3))),
+                None,
+            ]),
+            &Type::List(ListType {
+                element_field: NestedField::list_element(
+                    0,
+                    Type::Primitive(PrimitiveType::Int),
+                    false,
+                )
+                .into(),
+            }),
+        );
+
+        check_convert_with_avro(
+            Literal::List(vec![
+                Some(Literal::Primitive(PrimitiveLiteral::Int(1))),
+                Some(Literal::Primitive(PrimitiveLiteral::Int(2))),
+                Some(Literal::Primitive(PrimitiveLiteral::Int(3))),
+            ]),
+            &Type::List(ListType {
+                element_field: NestedField::list_element(
+                    0,
+                    Type::Primitive(PrimitiveType::Int),
+                    true,
+                )
+                .into(),
+            }),
+        );
+    }
+
+    #[test]
+    fn avro_convert_test_map() {
+        check_convert_with_avro(
+            Literal::Map(BTreeMap::from([
+                (
+                    Literal::Primitive(PrimitiveLiteral::Int(1)),
+                    Some(Literal::Primitive(PrimitiveLiteral::Long(1))),
+                ),
+                (
+                    Literal::Primitive(PrimitiveLiteral::Int(2)),
+                    Some(Literal::Primitive(PrimitiveLiteral::Long(2))),
+                ),
+                (Literal::Primitive(PrimitiveLiteral::Int(3)), None),
+            ])),
+            &Type::Map(MapType {
+                key_field: NestedField::map_key_element(0, 
Type::Primitive(PrimitiveType::Int))
+                    .into(),
+                value_field: NestedField::map_value_element(
+                    1,
+                    Type::Primitive(PrimitiveType::Long),
+                    false,
+                )
+                .into(),
+            }),
+        );
+
+        check_convert_with_avro(
+            Literal::Map(BTreeMap::from([
+                (
+                    Literal::Primitive(PrimitiveLiteral::Int(1)),
+                    Some(Literal::Primitive(PrimitiveLiteral::Long(1))),
+                ),
+                (
+                    Literal::Primitive(PrimitiveLiteral::Int(2)),
+                    Some(Literal::Primitive(PrimitiveLiteral::Long(2))),
+                ),
+                (
+                    Literal::Primitive(PrimitiveLiteral::Int(3)),
+                    Some(Literal::Primitive(PrimitiveLiteral::Long(3))),
+                ),
+            ])),
+            &Type::Map(MapType {
+                key_field: NestedField::map_key_element(0, 
Type::Primitive(PrimitiveType::Int))
+                    .into(),
+                value_field: NestedField::map_value_element(
+                    1,
+                    Type::Primitive(PrimitiveType::Long),
+                    true,
+                )
+                .into(),
+            }),
+        );
+    }
+
+    #[test]
+    fn avro_convert_test_string_map() {
+        check_convert_with_avro(
+            Literal::Map(BTreeMap::from([
+                (
+                    
Literal::Primitive(PrimitiveLiteral::String("a".to_string())),
+                    Some(Literal::Primitive(PrimitiveLiteral::Int(1))),
+                ),
+                (
+                    
Literal::Primitive(PrimitiveLiteral::String("b".to_string())),
+                    Some(Literal::Primitive(PrimitiveLiteral::Int(2))),
+                ),
+                (
+                    
Literal::Primitive(PrimitiveLiteral::String("c".to_string())),
+                    None,
+                ),
+            ])),
+            &Type::Map(MapType {
+                key_field: NestedField::map_key_element(0, 
Type::Primitive(PrimitiveType::String))
+                    .into(),
+                value_field: NestedField::map_value_element(
+                    1,
+                    Type::Primitive(PrimitiveType::Int),
+                    false,
+                )
+                .into(),
+            }),
+        );
+
+        check_convert_with_avro(
+            Literal::Map(BTreeMap::from([
+                (
+                    
Literal::Primitive(PrimitiveLiteral::String("a".to_string())),
+                    Some(Literal::Primitive(PrimitiveLiteral::Int(1))),
+                ),
+                (
+                    
Literal::Primitive(PrimitiveLiteral::String("b".to_string())),
+                    Some(Literal::Primitive(PrimitiveLiteral::Int(2))),
+                ),
+                (
+                    
Literal::Primitive(PrimitiveLiteral::String("c".to_string())),
+                    Some(Literal::Primitive(PrimitiveLiteral::Int(3))),
+                ),
+            ])),
+            &Type::Map(MapType {
+                key_field: NestedField::map_key_element(0, 
Type::Primitive(PrimitiveType::String))
+                    .into(),
+                value_field: NestedField::map_value_element(
+                    1,
+                    Type::Primitive(PrimitiveType::Int),
+                    true,
+                )
+                .into(),
+            }),
+        );
+    }
+
+    #[test]
+    fn avro_convert_test_record() {
+        check_convert_with_avro(
+            Literal::Struct(Struct::from_iter(vec![
+                (
+                    1,
+                    Some(Literal::Primitive(PrimitiveLiteral::Int(1))),
+                    "id".to_string(),
+                ),
+                (
+                    2,
+                    Some(Literal::Primitive(PrimitiveLiteral::String(
+                        "bar".to_string(),
+                    ))),
+                    "name".to_string(),
+                ),
+                (3, None, "address".to_string()),
+            ])),
+            &Type::Struct(StructType::new(vec![
+                NestedField::required(1, "id", 
Type::Primitive(PrimitiveType::Int)).into(),
+                NestedField::optional(2, "name", 
Type::Primitive(PrimitiveType::String)).into(),
+                NestedField::optional(3, "address", 
Type::Primitive(PrimitiveType::String)).into(),
+            ])),
+        );
+    }
+
+    // # TODO
+    // rust avro don't support deserialize any bytes representation now:
+    // - binary
+    // - fixed
+    // - decimal
+    // - uuid

Review Comment:
   Did you means we can test serialize? 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to