You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by mg...@apache.org on 2023/04/10 19:32:06 UTC

[avro] branch avro-3735-parse-enum-ns created (now 580f63137)

This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a change to branch avro-3735-parse-enum-ns
in repository https://gitbox.apache.org/repos/asf/avro.git


      at 580f63137 AVRO-3735: Add a unit test

This branch includes the following new commits:

     new 580f63137 AVRO-3735: Add a unit test

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[avro] 01/01: AVRO-3735: Add a unit test

Posted by mg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a commit to branch avro-3735-parse-enum-ns
in repository https://gitbox.apache.org/repos/asf/avro.git

commit 580f63137e4a30659b72d439376a2e4b5385ce14
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
AuthorDate: Mon Apr 10 22:31:21 2023 +0300

    AVRO-3735: Add a unit test
    
    Signed-off-by: Martin Tzvetanov Grigorov <mg...@apache.org>
---
 lang/rust/avro/src/schema.rs | 68 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)

diff --git a/lang/rust/avro/src/schema.rs b/lang/rust/avro/src/schema.rs
index 07f2ac3ac..5c0ce69de 100644
--- a/lang/rust/avro/src/schema.rs
+++ b/lang/rust/avro/src/schema.rs
@@ -4369,4 +4369,72 @@ mod tests {
             panic!("Expected a record schema!");
         }
     }
+
+    #[test]
+    fn avro_3735_parse_enum_namespace() {
+        let schema = r#"
+        {
+            "type": "record",
+            "name": "Foo",
+            "namespace": "name.space",
+            "fields":
+            [
+                {
+                    "name": "barInit",
+                    "type":
+                    {
+                        "type": "enum",
+                        "name": "Bar",
+                        "symbols":
+                        [
+                            "bar0",
+                            "bar1"
+                        ]
+                    }
+                },
+                {
+                    "name": "barUse",
+                    "type": "Bar"
+                }
+            ]
+        } 
+        "#;
+
+        #[derive(
+            Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Clone, serde::Deserialize, serde::Serialize,
+        )]
+        pub enum Bar {
+            #[serde(rename = "bar0")]
+            Bar0,
+            #[serde(rename = "bar1")]
+            Bar1,
+        }
+
+        #[derive(Debug, PartialEq, Eq, Clone, serde::Deserialize, serde::Serialize)]
+        pub struct Foo {
+            #[serde(rename = "barInit")]
+            pub bar_init: Bar,
+            #[serde(rename = "barUse")]
+            pub bar_use: Bar,
+        }
+
+        let schema = Schema::parse_str(schema).unwrap();
+
+        let foo = Foo {
+            bar_init: Bar::Bar0,
+            bar_use: Bar::Bar1,
+        };
+
+        let avro_value = crate::to_value(foo).unwrap();
+        dbg!(&avro_value);
+        println!(
+            "value is valid for schema: {}",
+            avro_value.validate(&schema)
+        );
+
+        let mut writer = crate::Writer::new(&schema, Vec::new());
+
+        // schema validation happens here
+        writer.append(avro_value).unwrap();
+    }
 }