in avro/src/schema.rs [5741:5814]
fn test_avro_3830_null_namespace_in_fully_qualified_names() -> TestResult {
// Check whether all the named types don't refer to the namespace field
// if their name starts with a dot.
let schema_str = r#"
{
"name": ".record1",
"namespace": "ns1",
"type": "record",
"fields": [
{
"name": "f1",
"type": {
"name": ".enum1",
"namespace": "ns2",
"type": "enum",
"symbols": ["a"]
}
}, {
"name": "f2",
"type": {
"name": ".fxed1",
"namespace": "ns3",
"type": "fixed",
"size": 1
}
}
]
}
"#;
let expected = r#"{"name":"record1","type":"record","fields":[{"name":"f1","type":{"name":"enum1","type":"enum","symbols":["a"]}},{"name":"f2","type":{"name":"fxed1","type":"fixed","size":1}}]}"#;
let schema = Schema::parse_str(schema_str)?;
let canonical_form = schema.canonical_form();
assert_eq!(canonical_form, expected);
// Check whether inner types don't inherit ns1.
let schema_str = r#"
{
"name": ".record1",
"namespace": "ns1",
"type": "record",
"fields": [
{
"name": "f1",
"type": {
"name": "enum1",
"type": "enum",
"symbols": ["a"]
}
}, {
"name": "f2",
"type": {
"name": "fxed1",
"type": "fixed",
"size": 1
}
}
]
}
"#;
let expected = r#"{"name":"record1","type":"record","fields":[{"name":"f1","type":{"name":"enum1","type":"enum","symbols":["a"]}},{"name":"f2","type":{"name":"fxed1","type":"fixed","size":1}}]}"#;
let schema = Schema::parse_str(schema_str)?;
let canonical_form = schema.canonical_form();
assert_eq!(canonical_form, expected);
let name = Name::new(".my_name")?;
let fullname = name.fullname(None);
assert_eq!(fullname, "my_name");
let qname = name.fully_qualified_name(&None).to_string();
assert_eq!(qname, "my_name");
Ok(())
}