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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]