Fix compilation errors when element name contains dots

This commit is contained in:
Dmitry Samoylov
2020-02-04 15:18:09 +07:00
parent 6bbb9676d0
commit 688ab0b160
4 changed files with 79 additions and 45 deletions

View File

@@ -181,6 +181,8 @@ fn de_rename() {
item: String,
#[yaserde(rename = "sub")]
sub_struct: SubStruct,
#[yaserde(rename = "maj.min.bug")]
with_dots: String,
}
#[derive(YaDeserialize, PartialEq, Debug)]
@@ -198,7 +200,7 @@ fn de_rename() {
}
}
let content = "<base Item=\"something\"><sub sub_item=\"sub_something\"></sub></base>";
let content = "<base Item=\"something\"><sub sub_item=\"sub_something\"></sub><maj.min.bug>2.0.1</maj.min.bug></base>";
convert_and_validate!(
content,
XmlStruct,
@@ -207,6 +209,7 @@ fn de_rename() {
sub_struct: SubStruct {
subitem: "sub_something".to_string(),
},
with_dots: "2.0.1".into()
}
);
}
@@ -378,6 +381,8 @@ fn de_complex_enum() {
Magenta(Vec<OtherStruct>),
#[yaserde(rename = "NotSoCyan")]
Cyan(Vec<OtherStruct>),
#[yaserde(rename = "renamed.with.dots")]
Dotted(u32),
}
impl Default for Color {
@@ -551,6 +556,21 @@ fn de_complex_enum() {
])
}
);
let content = r#"<?xml version="1.0" encoding="utf-8"?>
<base xmlns:ns="http://www.sample.com/ns/domain">
<background>
<renamed.with.dots>54</renamed.with.dots>
</background>
</base>
"#;
convert_and_validate!(
content,
XmlStruct,
XmlStruct {
background: Color::Dotted(54)
}
);
}
#[test]

View File

@@ -125,6 +125,8 @@ fn ser_rename() {
item: String,
#[yaserde(rename = "sub")]
sub_struct: SubStruct,
#[yaserde(rename = "maj.min.bug")]
version: String,
}
#[derive(YaSerialize, PartialEq, Debug)]
@@ -154,9 +156,10 @@ fn ser_rename() {
sub_struct: SubStruct {
subitem: "sub_something".to_string(),
},
version: "2.0.2".into(),
};
let content = "<?xml version=\"1.0\" encoding=\"utf-8\"?><base Item=\"something\"><sub sub_item=\"sub_something\" /></base>";
let content = "<?xml version=\"1.0\" encoding=\"utf-8\"?><base Item=\"something\"><sub sub_item=\"sub_something\" /><maj.min.bug>2.0.2</maj.min.bug></base>";
convert_and_validate!(model, content);
}
@@ -326,6 +329,8 @@ fn ser_unnamed_enum() {
Structs(Vec<OtherStruct>),
#[yaserde(rename = "renamed")]
ToRename(u32),
#[yaserde(rename = "renamed.with.dots")]
ToRenameDots(u32),
}
impl Default for Enum {
@@ -422,6 +427,14 @@ fn ser_unnamed_enum() {
let content =
"<?xml version=\"1.0\" encoding=\"utf-8\"?><base><color><renamed>87</renamed></color></base>";
convert_and_validate!(model, content);
let model = XmlStruct {
color: Enum::ToRenameDots(84),
};
let content =
"<?xml version=\"1.0\" encoding=\"utf-8\"?><base><color><renamed.with.dots>84</renamed.with.dots></color></base>";
convert_and_validate!(model, content);
}
#[test]