Skip to main content

cufflink_types/host/
mod.rs

1//! The envelopes of the host functions and the guest request, shared by
2//! the guest SDK and the platform so the two sides cannot drift.
3
4pub mod http;
5pub mod nats;
6pub mod request;
7pub mod storage;
8
9#[cfg(test)]
10pub(crate) mod tests {
11    use serde::de::DeserializeOwned;
12    use serde::Serialize;
13    use serde_json::Value;
14    use std::fmt::Debug;
15
16    pub(crate) fn round_trip<T: Serialize + DeserializeOwned + PartialEq + Debug>(
17        value: &T,
18        wire: Value,
19    ) {
20        assert_eq!(serde_json::to_value(value).expect("serialize"), wire);
21        assert_eq!(
22            &serde_json::from_value::<T>(wire).expect("deserialize"),
23            value
24        );
25    }
26
27    pub(crate) fn refused<T: DeserializeOwned + Debug>(wire: Value) {
28        let parsed = serde_json::from_value::<T>(wire.clone());
29        assert!(parsed.is_err(), "{wire} parsed as {parsed:?}");
30    }
31}