/// Tests which ensure that the main data structures can be round-tripped faithfully. use super::*; use crypto::Hash; use serde_block_tree::{Error, Result, from_vec, to_vec}; use test_helpers::*; #[test] fn roundtrip_fragment_record() -> Result<()> { let expected = FragmentRecord::new(229, Hash::Sha2_256(PRINCIPAL)); let ser_result = to_vec(&expected); let de_result = from_vec(&ser_result?); assert_eq!(expected, de_result?); Ok(()) } #[test] fn roundtrip_directory() -> Result<()> { let principal = Principal(Hash::Sha2_256(PRINCIPAL)); let mut child = HashMap::new(); child.insert(FragmentSerial(0), FragmentRecord::new(0, principal.0)); let mut children = HashMap::new(); children.insert(".metadata".to_string(), child); let expected = Directory { nodes: vec![Principal(Hash::Sha2_256(PRINCIPAL))], children }; let ser_result = to_vec(&expected); let de_result = from_vec(&ser_result?); assert_eq!(expected, de_result?); Ok(()) } #[test] fn roundtrip_fragment() -> Result<()> { let body = Vec::from(PAYLOAD); let path = make_path(vec!["apps", "bohdi"]); let expected = Fragment::new(path.to_string().as_str(), 42, body) .map_err(|err| Error::Message(err.to_string()))?; let ser_result = to_vec(&expected); let de_result = from_vec(&ser_result?); assert_eq!(expected, de_result?); Ok(()) } #[test] fn roundtrip_write_cap() -> Result<()> { let expected = make_write_cap()?; let ser_result = to_vec(&expected); let de_result = from_vec(&ser_result?); assert_eq!(expected, de_result?); Ok(()) } #[test] fn roundtrip_read_cap() -> Result<()> { let expected = make_read_cap(); let ser_result = to_vec(&expected); let de_result = from_vec(&ser_result?); assert_eq!(expected, de_result?); Ok(()) } #[test] fn roundtrip_versioned_block() -> Result<()> { let expected = VersionedBlock::V0(make_block()?); let ser_result = to_vec(&expected); let de_result = from_vec(&ser_result?); assert_eq!(expected, de_result?); Ok(()) }