use super::action::Action;
use super::category::Category;
use super::data::Data;
use super::resources::{MipmapOrDrawableResource, StringResourceOrString};
use serde::{Deserialize, Serialize};
#[derive(
Debug, Deserialize, Serialize, YaSerialize, YaDeserialize, PartialEq, Eq, Default, Clone,
)]
pub struct IntentFilter {
#[yaserde(attribute = true, prefix = "android")]
pub icon: Option<MipmapOrDrawableResource>,
#[yaserde(attribute = true, prefix = "android")]
pub label: Option<StringResourceOrString>,
#[yaserde(attribute = true, prefix = "android")]
pub priority: Option<u32>,
#[yaserde(attribute = true, prefix = "android")]
pub order: Option<u32>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub action: Vec<Action>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub category: Vec<Category>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub data: Vec<Data>,
#[yaserde(attribute = true, prefix = "android", rename = "autoVerify")]
pub auto_verify: Option<bool>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_intent_filter_toml_serialize_deserialize() {
let value = IntentFilter {
order: Some(100),
action: vec![Action {
name: Some("android.intent.action.MAIN".to_string()),
}],
category: vec![Category {
name: Some("android.intent.category.LAUNCHER".to_string()),
}],
..Default::default()
};
let string = toml::to_string_pretty(&value).unwrap();
let _value: IntentFilter = toml::from_str(&string).unwrap();
}
}