summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/translations-converter/src/android/strings.rs37
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);
+ }
+}