use crate::{binary_tree::LeafNodeIndex, treesync::node::parent_node::UnmergedLeaves};
use tls_codec::{Deserialize, Serialize};
#[test]
fn test_insert_unmerged_leaf() {
let mut unmerged_leaves = UnmergedLeaves::new();
unmerged_leaves.add(LeafNodeIndex::new(9));
unmerged_leaves.add(LeafNodeIndex::new(5));
unmerged_leaves.add(LeafNodeIndex::new(7));
unmerged_leaves.add(LeafNodeIndex::new(1));
unmerged_leaves.add(LeafNodeIndex::new(3));
assert_eq!(
unmerged_leaves.list(),
&[
LeafNodeIndex::new(1),
LeafNodeIndex::new(3),
LeafNodeIndex::new(5),
LeafNodeIndex::new(7),
LeafNodeIndex::new(9)
]
);
}
#[test]
fn test_deserialize_unsorted_unmerged_leaves() {
let mut unmerged_leaves = UnmergedLeaves::new();
unmerged_leaves.set_list(vec![
LeafNodeIndex::new(9),
LeafNodeIndex::new(5),
LeafNodeIndex::new(7),
LeafNodeIndex::new(1),
LeafNodeIndex::new(3),
]);
let serialized_unmerged_leaves = unmerged_leaves.tls_serialize_detached().unwrap();
let err =
UnmergedLeaves::tls_deserialize(&mut serialized_unmerged_leaves.as_slice()).unwrap_err();
assert!(matches!(err, tls_codec::Error::DecodingError(_)));
}
#[test]
fn test_deserialize_sorted_unmerged_leaves() {
let mut unmerged_leaves = UnmergedLeaves::new();
unmerged_leaves.set_list(vec![
LeafNodeIndex::new(1),
LeafNodeIndex::new(3),
LeafNodeIndex::new(5),
LeafNodeIndex::new(7),
LeafNodeIndex::new(9),
]);
let serialized_unmerged_leaves = unmerged_leaves.tls_serialize_detached().unwrap();
let deserialized_unmerged_leaves =
UnmergedLeaves::tls_deserialize(&mut serialized_unmerged_leaves.as_slice()).unwrap();
assert_eq!(
deserialized_unmerged_leaves.list(),
&[
LeafNodeIndex::new(1),
LeafNodeIndex::new(3),
LeafNodeIndex::new(5),
LeafNodeIndex::new(7),
LeafNodeIndex::new(9)
]
);
}