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 ext;
5pub mod http;
6pub mod nats;
7pub mod request;
8pub mod storage;
9
10#[cfg(test)]
11pub(crate) mod tests {
12    use serde::de::DeserializeOwned;
13    use serde::Serialize;
14    use serde_json::Value;
15    use std::fmt::Debug;
16
17    pub(crate) fn round_trip<T: Serialize + DeserializeOwned + PartialEq + Debug>(
18        value: &T,
19        wire: Value,
20    ) {
21        assert_eq!(serde_json::to_value(value).expect("serialize"), wire);
22        assert_eq!(
23            &serde_json::from_value::<T>(wire).expect("deserialize"),
24            value
25        );
26    }
27
28    pub(crate) fn refused<T: DeserializeOwned + Debug>(wire: Value) {
29        let parsed = serde_json::from_value::<T>(wire.clone());
30        assert!(parsed.is_err(), "{wire} parsed as {parsed:?}");
31    }
32}