serde_tests.rs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // SPDX-License-Identifier: AGPL-3.0-or-later
  2. /// Tests which ensure that the main data structures can be round-tripped faithfully.
  3. use super::*;
  4. use btserde::{from_vec, to_vec, Error, Result};
  5. use crypto::Hash;
  6. use test_helpers::*;
  7. #[test]
  8. fn roundtrip_fragment_record() -> Result<()> {
  9. let expected = FragmentRecord::new(229, Hash::Sha2_256(PRINCIPAL));
  10. let ser_result = to_vec(&expected);
  11. let de_result = from_vec(&ser_result?);
  12. assert_eq!(expected, de_result?);
  13. Ok(())
  14. }
  15. #[test]
  16. fn roundtrip_directory() -> Result<()> {
  17. let principal = Principal(Hash::Sha2_256(PRINCIPAL));
  18. let mut child = HashMap::new();
  19. child.insert(FragmentSerial(0), FragmentRecord::new(0, principal.0));
  20. let mut children = HashMap::new();
  21. children.insert(".metadata".to_string(), child);
  22. let expected = Directory {
  23. nodes: vec![Principal(Hash::Sha2_256(PRINCIPAL))],
  24. children,
  25. };
  26. let ser_result = to_vec(&expected);
  27. let de_result = from_vec(&ser_result?);
  28. assert_eq!(expected, de_result?);
  29. Ok(())
  30. }
  31. #[test]
  32. fn roundtrip_fragment() -> Result<()> {
  33. let body = Vec::from(PAYLOAD);
  34. let path = make_path(vec!["apps", "bohdi"]);
  35. let expected = Fragment::new(path.to_string().as_str(), 42, body)
  36. .map_err(|err| Error::Message(err.to_string()))?;
  37. let ser_result = to_vec(&expected);
  38. let de_result = from_vec(&ser_result?);
  39. assert_eq!(expected, de_result?);
  40. Ok(())
  41. }
  42. #[test]
  43. fn roundtrip_write_cap() {
  44. let expected = make_writecap(vec!["nodes", "home"]);
  45. let ser_result = to_vec(&expected).expect("to_vec failed");
  46. let actual = from_vec(&ser_result).expect("from_vec failed");
  47. assert_eq!(expected, actual);
  48. }
  49. #[test]
  50. fn roundtrip_read_cap() {
  51. let expected = make_readcap();
  52. let ser_result = to_vec(&expected).expect("to_vec failed");
  53. let actual = from_vec(&ser_result).expect("from_vec failed");
  54. assert_eq!(expected, actual);
  55. }