use crate::util::Utf16String;
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct AbstractMessageResolver {
name: Option<Utf16String>,
order: Option<i32>,
}
impl AbstractMessageResolver {
#[must_use]
pub fn new(class_name: &str) -> Self {
Self {
name: Some(Utf16String::from_rust_str(class_name)),
order: None,
}
}
#[must_use]
pub const fn get_name(&self) -> Option<&Utf16String> {
self.name.as_ref()
}
pub fn set_name(&mut self, name: Option<Utf16String>) {
self.name = name;
}
#[must_use]
pub const fn get_order(&self) -> Option<i32> {
self.order
}
pub fn set_order(&mut self, order: Option<i32>) {
self.order = order;
}
}
#[cfg(test)]
mod tests {
use crate::util::Utf16String;
use super::AbstractMessageResolver;
#[test]
fn preserves_java_name_and_order_state() {
let mut resolver = AbstractMessageResolver::new("example.ChildResolver");
assert_eq!(
resolver.get_name(),
Some(&Utf16String::from_rust_str("example.ChildResolver"))
);
assert_eq!(resolver.get_order(), None);
resolver.set_name(None);
resolver.set_order(Some(-7));
assert_eq!(resolver.get_name(), None);
assert_eq!(resolver.get_order(), Some(-7));
}
}