serde_tests.rs 2.1 KB

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