123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- // SPDX-License-Identifier: AGPL-3.0-or-later
- /// Tests which ensure that the main data structures can be round-tripped faithfully.
- use super::*;
- use btserde::{from_vec, to_vec, Error, Result};
- use crypto::Hash;
- 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() {
- let expected = make_writecap(vec!["nodes", "home"]);
- let ser_result = to_vec(&expected).expect("to_vec failed");
- let actual = from_vec(&ser_result).expect("from_vec failed");
- assert_eq!(expected, actual);
- }
- #[test]
- fn roundtrip_read_cap() {
- let expected = make_readcap();
- let ser_result = to_vec(&expected).expect("to_vec failed");
- let actual = from_vec(&ser_result).expect("from_vec failed");
- assert_eq!(expected, actual);
- }
|