Update serde tests

* macro => function
* json string => serde_json::Value
This commit is contained in:
Jonas Platte 2020-03-11 12:55:37 +01:00
parent b03eb0261f
commit dce5ae5c39
No known key found for this signature in database
GPG Key ID: 7D261D771D915378
4 changed files with 100 additions and 77 deletions

View File

@ -64,18 +64,21 @@ impl From<Algorithm> for String {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use serde_json::json;
use super::*; use super::*;
use crate::util::serde_json_eq;
#[test] #[test]
fn serialize_and_deserialize_from_display_form() { fn serialize_and_deserialize_from_display_form() {
serde_eq!(r#""m.megolm.v1.aes-sha2""#, Algorithm::MegolmV1AesSha2); serde_json_eq(Algorithm::MegolmV1AesSha2, json!("m.megolm.v1.aes-sha2"));
serde_eq!( serde_json_eq(
r#""m.olm.v1.curve25519-aes-sha2""#, Algorithm::OlmV1Curve25519AesSha2,
Algorithm::OlmV1Curve25519AesSha2 json!("m.olm.v1.curve25519-aes-sha2"),
); );
serde_eq!( serde_json_eq(
r#""io.ruma.test""#, Algorithm::Custom("io.ruma.test".to_string()),
Algorithm::Custom("io.ruma.test".to_string()) json!("io.ruma.test"),
); );
} }
} }

View File

@ -269,78 +269,90 @@ impl From<EventType> for String {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use serde_json::json;
use super::*; use super::*;
use crate::util::serde_json_eq;
#[allow(clippy::cognitive_complexity)] #[allow(clippy::cognitive_complexity)]
#[test] #[test]
fn serialize_and_deserialize_from_display_form() { fn serialize_and_deserialize_from_display_form() {
serde_eq!(r#""m.call.answer""#, EventType::CallAnswer); serde_json_eq(EventType::CallAnswer, json!("m.call.answer"));
serde_eq!(r#""m.call.candidates""#, EventType::CallCandidates); serde_json_eq(EventType::CallCandidates, json!("m.call.candidates"));
serde_eq!(r#""m.call.hangup""#, EventType::CallHangup); serde_json_eq(EventType::CallHangup, json!("m.call.hangup"));
serde_eq!(r#""m.call.invite""#, EventType::CallInvite); serde_json_eq(EventType::CallInvite, json!("m.call.invite"));
serde_eq!(r#""m.direct""#, EventType::Direct); serde_json_eq(EventType::Direct, json!("m.direct"));
serde_eq!(r#""m.dummy""#, EventType::Dummy); serde_json_eq(EventType::Dummy, json!("m.dummy"));
serde_eq!(r#""m.forwarded_room_key""#, EventType::ForwardedRoomKey); serde_json_eq(EventType::ForwardedRoomKey, json!("m.forwarded_room_key"));
serde_eq!(r#""m.fully_read""#, EventType::FullyRead); serde_json_eq(EventType::FullyRead, json!("m.fully_read"));
serde_eq!( serde_json_eq(
r#""m.key.verification.accept""#, EventType::KeyVerificationAccept,
EventType::KeyVerificationAccept json!("m.key.verification.accept"),
); );
serde_eq!( serde_json_eq(
r#""m.key.verification.cancel""#, EventType::KeyVerificationCancel,
EventType::KeyVerificationCancel json!("m.key.verification.cancel"),
); );
serde_eq!(r#""m.key.verification.key""#, EventType::KeyVerificationKey); serde_json_eq(
serde_eq!(r#""m.key.verification.mac""#, EventType::KeyVerificationMac); EventType::KeyVerificationKey,
serde_eq!( json!("m.key.verification.key"),
r#""m.key.verification.request""#,
EventType::KeyVerificationRequest
); );
serde_eq!( serde_json_eq(
r#""m.key.verification.start""#, EventType::KeyVerificationMac,
EventType::KeyVerificationStart json!("m.key.verification.mac"),
); );
serde_eq!(r#""m.ignored_user_list""#, EventType::IgnoredUserList); serde_json_eq(
serde_eq!(r#""m.presence""#, EventType::Presence); EventType::KeyVerificationRequest,
serde_eq!(r#""m.push_rules""#, EventType::PushRules); json!("m.key.verification.request"),
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_json_eq(
serde_eq!(r#""m.room.member""#, EventType::RoomMember); EventType::KeyVerificationStart,
serde_eq!(r#""m.room.message""#, EventType::RoomMessage); json!("m.key.verification.start"),
serde_eq!(
r#""m.room.message.feedback""#,
EventType::RoomMessageFeedback
); );
serde_eq!(r#""m.room.name""#, EventType::RoomName); serde_json_eq(EventType::IgnoredUserList, json!("m.ignored_user_list"));
serde_eq!(r#""m.room.pinned_events""#, EventType::RoomPinnedEvents); serde_json_eq(EventType::Presence, json!("m.presence"));
serde_eq!(r#""m.room.power_levels""#, EventType::RoomPowerLevels); serde_json_eq(EventType::PushRules, json!("m.push_rules"));
serde_eq!(r#""m.room.redaction""#, EventType::RoomRedaction); serde_json_eq(EventType::Receipt, json!("m.receipt"));
serde_eq!(r#""m.room.server_acl""#, EventType::RoomServerAcl); serde_json_eq(EventType::RoomAliases, json!("m.room.aliases"));
serde_eq!( serde_json_eq(EventType::RoomAvatar, json!("m.room.avatar"));
r#""m.room.third_party_invite""#, serde_json_eq(
EventType::RoomThirdPartyInvite EventType::RoomCanonicalAlias,
json!("m.room.canonical_alias"),
); );
serde_eq!(r#""m.room.tombstone""#, EventType::RoomTombstone); serde_json_eq(EventType::RoomCreate, json!("m.room.create"));
serde_eq!(r#""m.room.topic""#, EventType::RoomTopic); serde_json_eq(EventType::RoomEncrypted, json!("m.room.encrypted"));
serde_eq!(r#""m.room_key""#, EventType::RoomKey); serde_json_eq(EventType::RoomEncryption, json!("m.room.encryption"));
serde_eq!(r#""m.room_key_request""#, EventType::RoomKeyRequest); serde_json_eq(EventType::RoomGuestAccess, json!("m.room.guest_access"));
serde_eq!(r#""m.sticker""#, EventType::Sticker); serde_json_eq(
serde_eq!(r#""m.tag""#, EventType::Tag); EventType::RoomHistoryVisibility,
serde_eq!(r#""m.typing""#, EventType::Typing); json!("m.room.history_visibility"),
serde_eq!( );
r#""io.ruma.test""#, serde_json_eq(EventType::RoomJoinRules, json!("m.room.join_rules"));
EventType::Custom("io.ruma.test".to_string()) serde_json_eq(EventType::RoomMember, json!("m.room.member"));
serde_json_eq(EventType::RoomMessage, json!("m.room.message"));
serde_json_eq(
EventType::RoomMessageFeedback,
json!("m.room.message.feedback"),
);
serde_json_eq(EventType::RoomName, json!("m.room.name"));
serde_json_eq(EventType::RoomPinnedEvents, json!("m.room.pinned_events"));
serde_json_eq(EventType::RoomPowerLevels, json!("m.room.power_levels"));
serde_json_eq(EventType::RoomRedaction, json!("m.room.redaction"));
serde_json_eq(EventType::RoomServerAcl, json!("m.room.server_acl"));
serde_json_eq(
EventType::RoomThirdPartyInvite,
json!("m.room.third_party_invite"),
);
serde_json_eq(EventType::RoomTombstone, json!("m.room.tombstone"));
serde_json_eq(EventType::RoomTopic, json!("m.room.topic"));
serde_json_eq(EventType::RoomKey, json!("m.room_key"));
serde_json_eq(EventType::RoomKeyRequest, json!("m.room_key_request"));
serde_json_eq(EventType::Sticker, json!("m.sticker"));
serde_json_eq(EventType::Tag, json!("m.tag"));
serde_json_eq(EventType::Typing, json!("m.typing"));
serde_json_eq(
EventType::Custom("io.ruma.test".to_string()),
json!("io.ruma.test"),
); );
} }
} }

View File

@ -107,13 +107,3 @@ 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);
};
}

View File

@ -105,3 +105,21 @@ pub mod vec_as_map_of_empty {
pub fn default_true() -> bool { pub fn default_true() -> bool {
true true
} }
#[cfg(test)]
mod test_util {
use std::fmt::Debug;
use serde::{de::DeserializeOwned, Serialize};
pub fn serde_json_eq<T>(de: T, se: serde_json::Value)
where
T: Clone + Debug + PartialEq + Serialize + DeserializeOwned,
{
assert_eq!(se, serde_json::to_value(de.clone()).unwrap());
assert_eq!(de, serde_json::from_value(se).unwrap());
}
}
#[cfg(test)]
pub use test_util::*;