diff options
Diffstat (limited to 'android')
| -rw-r--r-- | android/translations-converter/src/android/strings.rs | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/android/translations-converter/src/android/strings.rs b/android/translations-converter/src/android/strings.rs index 4d52417614..3307b5dbaa 100644 --- a/android/translations-converter/src/android/strings.rs +++ b/android/translations-converter/src/android/strings.rs @@ -8,14 +8,14 @@ use std::{ /// Contents of an Android string resources file. /// /// This type can be created directly deserializing the `strings.xml` file. -#[derive(Clone, Debug, Deserialize, Serialize)] +#[derive(Clone, Debug, Eq, Deserialize, PartialEq, Serialize)] pub struct StringResources { #[serde(rename = "string")] entries: Vec<StringResource>, } /// An entry in an Android string resources file. -#[derive(Clone, Debug, Deserialize, Serialize)] +#[derive(Clone, Debug, Eq, Deserialize, PartialEq, Serialize)] pub struct StringResource { /// The string resource ID. pub name: String, @@ -115,3 +115,36 @@ impl Display for StringResource { } } } + +#[cfg(test)] +mod tests { + use super::{StringResource, StringResources, StringValue}; + + #[test] + fn deserialization() { + let xml_input = r#"<resources> + <string name="first">First string</string> + <string name="second" translatable="false">Second string</string> + </resources>"#; + + let mut expected = StringResources::new(); + + expected.extend(vec![ + StringResource { + name: "first".to_owned(), + translatable: true, + value: StringValue::from_unescaped("First string"), + }, + StringResource { + name: "second".to_owned(), + translatable: false, + value: StringValue::from_unescaped("Second string"), + }, + ]); + + let deserialized: StringResources = + serde_xml_rs::from_str(xml_input).expect("malformed XML in test input"); + + assert_eq!(deserialized, expected); + } +} |
