diff options
author | Daniel Schadt <kingdread@gmx.de> | 2020-10-01 17:04:55 +0200 |
---|---|---|
committer | Daniel Schadt <kingdread@gmx.de> | 2020-10-01 17:04:55 +0200 |
commit | 60f8e6a1e547f7059a69cb71714f34aed5797dd5 (patch) | |
tree | 9b8351bf510e40326d974c70dacc4620ab9be143 /src | |
parent | 62249e950c0c5dee0b09b962842543fd60c9ccb4 (diff) | |
download | evtclib-60f8e6a1e547f7059a69cb71714f34aed5797dd5.tar.gz evtclib-60f8e6a1e547f7059a69cb71714f34aed5797dd5.tar.bz2 evtclib-60f8e6a1e547f7059a69cb71714f34aed5797dd5.zip |
add Agent serialization tests
Diffstat (limited to 'src')
-rw-r--r-- | src/agent.rs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/agent.rs b/src/agent.rs index 11f81d1..bb5acd6 100644 --- a/src/agent.rs +++ b/src/agent.rs @@ -730,3 +730,56 @@ impl Agent<Character> { self.character().name() } } + +#[cfg(all(feature = "serde", test))] +mod tests { + use super::*; + + fn agent() -> Agent { + Agent { + addr: 0xdeadbeef, + kind: AgentKind::Character(Character { + id: 0xf00, + name: "Foo Bar".into(), + }), + toughness: -13, + concentration: -14, + healing: -15, + condition: -16, + instance_id: 1337, + first_aware: 0, + last_aware: 0xffffff, + master_agent: None, + phantom_data: PhantomData, + } + } + + #[test] + fn serialization() { + let agent = agent(); + let json = serde_json::to_string(&agent).unwrap(); + let expected = r#"{"addr":3735928559,"kind":{"Character":{"id":3840,"name":"Foo Bar"}},"toughness":-13,"concentration":-14,"healing":-15,"condition":-16,"instance_id":1337,"first_aware":0,"last_aware":16777215,"master_agent":null}"#; + assert_eq!(json, expected); + } + + #[test] + fn deserialization() { + let json = r#"{"addr":3735928559,"kind":{"Character":{"id":3840,"name":"Foo Bar"}},"toughness":-13,"concentration":-14,"healing":-15,"condition":-16,"instance_id":1337,"first_aware":0,"last_aware":16777215,"master_agent":null}"#; + let deserialized: Agent = serde_json::from_str(json).unwrap(); + assert_eq!(deserialized, agent()); + } + + #[test] + #[should_panic(expected = "missing field `master_agent`")] + fn deserialization_missing_field() { + let json = r#"{"addr":3735928559,"kind":{"Character":{"id":3840,"name":"Foo Bar"}},"toughness":-13,"concentration":-14,"healing":-15,"condition":-16,"instance_id":1337,"first_aware":0,"last_aware":16777215}"#; + serde_json::from_str::<Agent>(json).unwrap(); + } + + #[test] + #[should_panic(expected = "duplicate field `master_agent`")] + fn deserialization_duplicated_field() { + let json = r#"{"addr":3735928559,"kind":{"Character":{"id":3840,"name":"Foo Bar"}},"toughness":-13,"concentration":-14,"healing":-15,"condition":-16,"instance_id":1337,"first_aware":0,"last_aware":16777215,"master_agent":null,"master_agent":null}"#; + serde_json::from_str::<Agent>(json).unwrap(); + } +} |