diff options
Diffstat (limited to '')
| -rw-r--r-- | src/message/signalproxy/objects/ircuser.rs | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/src/message/signalproxy/objects/ircuser.rs b/src/message/signalproxy/objects/ircuser.rs new file mode 100644 index 0000000..0ce597f --- /dev/null +++ b/src/message/signalproxy/objects/ircuser.rs @@ -0,0 +1,201 @@ +use crate::primitive::{DateTime, StringList}; + +#[allow(unused_imports)] +use crate::message::signalproxy::Network; +use libquassel_derive::Network; + +#[allow(dead_code)] +#[derive(Debug, Clone, PartialEq, Network)] +#[network(repr = "maplist")] +pub struct IrcUser { + user: String, + host: String, + nick: String, + #[network(rename = "realName")] + real_name: String, + account: String, + away: bool, + #[network(rename = "awayMessage")] + away_message: String, + #[network(rename = "idleTime")] + idle_time: DateTime, + #[network(rename = "loginTime")] + login_time: DateTime, + server: String, + #[network(rename = "ircOperator")] + irc_operator: String, + #[network(rename = "lastAwayMessageTime")] + last_away_message_time: DateTime, + #[network(rename = "whoisServiceReply")] + whois_service_reply: String, + #[network(rename = "suserHost")] + suser_host: String, + encrypted: bool, + channels: StringList, + #[network(rename = "userModes")] + user_modes: String, +} + +#[cfg(test)] +mod tests { + use crate::primitive::{Variant, VariantMap}; + use time::OffsetDateTime; + + use super::*; + + fn get_runtime() -> IrcUser { + IrcUser { + user: s!("NickServ"), + host: s!("services"), + nick: s!("NickServ"), + real_name: s!(""), + account: s!(""), + away: false, + away_message: s!(""), + idle_time: OffsetDateTime::unix_epoch(), + login_time: OffsetDateTime::unix_epoch(), + server: s!(""), + irc_operator: s!(""), + last_away_message_time: OffsetDateTime::unix_epoch(), + whois_service_reply: s!(""), + suser_host: s!(""), + encrypted: false, + channels: StringList::new(), + user_modes: s!(""), + } + } + + fn get_network() -> VariantMap { + map! { + s!("suserHost") => Variant::VariantList(vec! + [ + Variant::String( + s!(""), + ), + ], + ), + s!("lastAwayMessageTime") => Variant::VariantList(vec! + [ + Variant::DateTime( + OffsetDateTime::unix_epoch() , + ), + ], + ), + s!("away") => Variant::VariantList(vec! + [ + Variant::bool( + false, + ), + ], + ), + s!("ircOperator") => Variant::VariantList(vec! + [ + Variant::String( + s!(""), + ), + ], + ), + s!("account") => Variant::VariantList(vec! + [ + Variant::String( + s!(""), + ), + ], + ), + s!("loginTime") => Variant::VariantList(vec! + [ + Variant::DateTime( + OffsetDateTime::unix_epoch() + ), + ], + ), + s!("userModes") => Variant::VariantList(vec! + [ + Variant::String( + s!(""), + ), + ], + ), + s!("host") => Variant::VariantList(vec! + [ + Variant::String( + s!("services"), + ), + ], + ), + s!("whoisServiceReply") => Variant::VariantList(vec! + [ + Variant::String( + s!(""), + ), + ], + ), + s!("channels") => Variant::VariantList(vec! + [ + Variant::StringList(vec! + [], + ), + ], + ), + s!("realName") => Variant::VariantList(vec! + [ + Variant::String( + s!(""), + ), + ], + ), + s!("nick") => Variant::VariantList(vec! + [ + Variant::String( + s!("NickServ"), + ), + ], + ), + s!("idleTime") => Variant::VariantList(vec! + [ + Variant::DateTime( + OffsetDateTime::unix_epoch() + ), + ], + ), + s!("encrypted") => Variant::VariantList(vec! + [ + Variant::bool( + false, + ), + ], + ), + s!("awayMessage") => Variant::VariantList(vec! + [ + Variant::String( + s!(""), + ), + ], + ), + s!("user") => Variant::VariantList(vec! + [ + Variant::String( + s!("NickServ"), + ), + ], + ), + s!("server") => Variant::VariantList(vec! + [ + Variant::String( + s!(""), + ), + ], + ), + } + } + + #[test] + fn ircuser_to_network() { + assert_eq!(get_runtime().to_network(), get_network()) + } + + #[test] + fn ircuser_from_network() { + assert_eq!(IrcUser::from_network(get_network()), get_runtime()) + } +} |
