use ichen_openprotocol::*;
use Message::*;
#[test]
fn integration_test_serialize_to_json() {
let mut m = Message::new_join(
"hello",
Filters::Status + Filters::All + Filters::Cycle + Filters::Operators,
);
if let Join { options, .. } = &mut m {
options.sequence = 999;
}
let json = m.to_json_str().unwrap();
assert_eq!(
r#"{"$type":"Join","version":"4.0","password":"hello","language":"EN","filter":"All, Operators","sequence":999}"#,
json
);
}
#[test]
fn integration_test_deserialize_from_json() {
let m = Message::parse_from_json_str(
r#"{"$type":"Join","version":"1.0.0","password":"hello","language":"EN","filter":"Mold, Cycle","sequence":42,"priority":10}"#,
)
.unwrap();
if let Join { version, password, filter, options, .. } = m {
assert_eq!("1.0.0", version);
assert_eq!("hello", password);
assert_eq!(42, options.sequence);
assert_eq!(10, options.priority);
assert!(filter.has(Filters::Cycle));
assert!(filter.has(Filters::Mold));
assert!(!filter.has(Filters::Alarms));
assert!(!filter.has(Filters::All));
} else {
panic!("Wrong type of message deserialized!");
}
}