#![cfg(feature = "serde")]
#![forbid(unsafe_code)]
use obj::{Config, Db, DbStat, Id, IntegrityReport};
fn roundtrip<T>(value: &T)
where
T: serde::Serialize + serde::de::DeserializeOwned + std::fmt::Debug,
{
let encoded = serde_json::to_string(value).expect("serialize via serde_json");
let decoded: T = serde_json::from_str(&encoded).expect("deserialize via serde_json");
assert_eq!(format!("{value:?}"), format!("{decoded:?}"));
}
#[test]
fn config_roundtrip() {
let cfg = Config::default();
roundtrip(&cfg);
}
#[test]
fn id_roundtrip() {
let id = Id::try_new(42).expect("Id::try_new(42)");
roundtrip(&id);
}
#[test]
fn integrity_report_roundtrip() {
let db = Db::memory().expect("Db::memory");
let report: IntegrityReport = db.integrity_check().expect("integrity_check");
roundtrip(&report);
}
#[test]
fn db_stat_roundtrip() {
let db = Db::memory().expect("Db::memory");
let stat: DbStat = db.stat().expect("Db::stat");
roundtrip(&stat);
}