diff --git a/src/algorithm.rs b/src/algorithm.rs index d0d9650c..876443cf 100644 --- a/src/algorithm.rs +++ b/src/algorithm.rs @@ -61,3 +61,21 @@ impl From for String { algorithm.to_string() } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn serialize_and_deserialize_from_display_form() { + serde_eq!(r#""m.megolm.v1.aes-sha2""#, Algorithm::MegolmV1AesSha2); + serde_eq!( + r#""m.olm.v1.curve25519-aes-sha2""#, + Algorithm::OlmV1Curve25519AesSha2 + ); + serde_eq!( + r#""io.ruma.test""#, + Algorithm::Custom("io.ruma.test".to_string()) + ); + } +} diff --git a/src/event_type.rs b/src/event_type.rs index 36faba26..cf9f799b 100644 --- a/src/event_type.rs +++ b/src/event_type.rs @@ -266,3 +266,81 @@ impl From for String { event_type.to_string() } } + +#[cfg(test)] +mod tests { + use super::*; + + #[allow(clippy::cognitive_complexity)] + #[test] + fn serialize_and_deserialize_from_display_form() { + serde_eq!(r#""m.call.answer""#, EventType::CallAnswer); + serde_eq!(r#""m.call.candidates""#, EventType::CallCandidates); + serde_eq!(r#""m.call.hangup""#, EventType::CallHangup); + serde_eq!(r#""m.call.invite""#, EventType::CallInvite); + serde_eq!(r#""m.direct""#, EventType::Direct); + serde_eq!(r#""m.dummy""#, EventType::Dummy); + serde_eq!(r#""m.forwarded_room_key""#, EventType::ForwardedRoomKey); + serde_eq!(r#""m.fully_read""#, EventType::FullyRead); + serde_eq!( + r#""m.key.verification.accept""#, + EventType::KeyVerificationAccept + ); + serde_eq!( + r#""m.key.verification.cancel""#, + EventType::KeyVerificationCancel + ); + serde_eq!(r#""m.key.verification.key""#, EventType::KeyVerificationKey); + serde_eq!(r#""m.key.verification.mac""#, EventType::KeyVerificationMac); + serde_eq!( + r#""m.key.verification.request""#, + EventType::KeyVerificationRequest + ); + serde_eq!( + r#""m.key.verification.start""#, + EventType::KeyVerificationStart + ); + serde_eq!(r#""m.ignored_user_list""#, EventType::IgnoredUserList); + serde_eq!(r#""m.presence""#, EventType::Presence); + serde_eq!(r#""m.push_rules""#, EventType::PushRules); + serde_eq!(r#""m.receipt""#, EventType::Receipt); + serde_eq!(r#""m.room.aliases""#, EventType::RoomAliases); + serde_eq!(r#""m.room.avatar""#, EventType::RoomAvatar); + serde_eq!(r#""m.room.canonical_alias""#, EventType::RoomCanonicalAlias); + serde_eq!(r#""m.room.create""#, EventType::RoomCreate); + serde_eq!(r#""m.room.encrypted""#, EventType::RoomEncrypted); + serde_eq!(r#""m.room.encryption""#, EventType::RoomEncryption); + serde_eq!(r#""m.room.guest_access""#, EventType::RoomGuestAccess); + serde_eq!( + r#""m.room.history_visibility""#, + EventType::RoomHistoryVisibility + ); + serde_eq!(r#""m.room.join_rules""#, EventType::RoomJoinRules); + serde_eq!(r#""m.room.member""#, EventType::RoomMember); + serde_eq!(r#""m.room.message""#, EventType::RoomMessage); + serde_eq!( + r#""m.room.message.feedback""#, + EventType::RoomMessageFeedback + ); + serde_eq!(r#""m.room.name""#, EventType::RoomName); + serde_eq!(r#""m.room.pinned_events""#, EventType::RoomPinnedEvents); + serde_eq!(r#""m.room.power_levels""#, EventType::RoomPowerLevels); + serde_eq!(r#""m.room.redaction""#, EventType::RoomRedaction); + serde_eq!(r#""m.room.server_acl""#, EventType::RoomServerAcl); + serde_eq!( + r#""m.room.third_party_invite""#, + EventType::RoomThirdPartyInvite + ); + serde_eq!(r#""m.room.tombstone""#, EventType::RoomTombstone); + serde_eq!(r#""m.room.topic""#, EventType::RoomTopic); + serde_eq!(r#""m.room_key""#, EventType::RoomKey); + serde_eq!(r#""m.room_key_request""#, EventType::RoomKeyRequest); + serde_eq!(r#""m.sticker""#, EventType::Sticker); + serde_eq!(r#""m.tag""#, EventType::Tag); + serde_eq!(r#""m.typing""#, EventType::Typing); + serde_eq!( + r#""io.ruma.test""#, + EventType::Custom("io.ruma.test".to_string()) + ); + } +} diff --git a/src/lib.rs b/src/lib.rs index 444ffaa1..98c4ff96 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -473,74 +473,3 @@ mod custom_state { } } } - -#[cfg(test)] -mod tests { - use serde_json::{from_str, to_string}; - - use super::{Algorithm, EventType}; - - #[test] - fn event_types_serialize_to_display_form() { - assert_eq!( - to_string(&EventType::RoomCreate).unwrap(), - r#""m.room.create""# - ); - } - - #[test] - fn custom_event_types_serialize_to_display_form() { - assert_eq!( - to_string(&EventType::Custom("io.ruma.test".to_string())).unwrap(), - r#""io.ruma.test""# - ); - } - - #[test] - fn event_types_deserialize_from_display_form() { - assert_eq!( - from_str::(r#""m.room.create""#).unwrap(), - EventType::RoomCreate - ); - } - - #[test] - fn custom_event_types_deserialize_from_display_form() { - assert_eq!( - from_str::(r#""io.ruma.test""#).unwrap(), - EventType::Custom("io.ruma.test".to_string()) - ) - } - - #[test] - fn algorithms_serialize_to_display_form() { - assert_eq!( - to_string(&Algorithm::MegolmV1AesSha2).unwrap(), - r#""m.megolm.v1.aes-sha2""# - ); - } - - #[test] - fn custom_algorithms_serialize_to_display_form() { - assert_eq!( - to_string(&Algorithm::Custom("io.ruma.test".to_string())).unwrap(), - r#""io.ruma.test""# - ); - } - - #[test] - fn algorithms_deserialize_from_display_form() { - assert_eq!( - from_str::(r#""m.megolm.v1.aes-sha2""#).unwrap(), - Algorithm::MegolmV1AesSha2 - ); - } - - #[test] - fn custom_algorithms_deserialize_from_display_form() { - assert_eq!( - from_str::(r#""io.ruma.test""#).unwrap(), - Algorithm::Custom("io.ruma.test".to_string()) - ) - } -} diff --git a/src/macros.rs b/src/macros.rs index 91838a4a..8d53e261 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -107,3 +107,13 @@ macro_rules! impl_from_for_enum { } }; } + +#[cfg(test)] +macro_rules! serde_eq { + ($de:literal, $se:expr) => { + let mut val = $se; + assert_eq!($de, serde_json::to_string(&val).unwrap()); + val = serde_json::from_str($de).unwrap(); + assert_eq!(val, $se); + }; +}