mirror of
https://github.com/Qortal/pirate-librustzcash.git
synced 2025-07-30 20:11:23 +00:00
some ascii fun
This commit is contained in:
52
src/tree.rs
52
src/tree.rs
@@ -362,10 +362,35 @@ mod tests {
|
|||||||
let (mut tree, root) = generated(9);
|
let (mut tree, root) = generated(9);
|
||||||
let delete_tx = tree.truncate_leaf(root);
|
let delete_tx = tree.truncate_leaf(root);
|
||||||
|
|
||||||
|
// initial tree:
|
||||||
|
//
|
||||||
|
// (-------16g------)
|
||||||
|
// / \
|
||||||
|
// (--------14-------) \
|
||||||
|
// / \ \
|
||||||
|
// ( 6 ) ( 13 ) \
|
||||||
|
// / \ / \ \
|
||||||
|
// (2) (5) (9) (12) \
|
||||||
|
// / \ / \ / \ / \ \
|
||||||
|
// (0) (1) (3) (4) (7) (8) (10) (11) (15)
|
||||||
|
//
|
||||||
|
// new tree:
|
||||||
|
// (--------14-------)
|
||||||
|
// / \
|
||||||
|
// ( 6 ) ( 13 )
|
||||||
|
// / \ / \
|
||||||
|
// (2) (5) (9) (12)
|
||||||
|
// / \ / \ / \ / \
|
||||||
|
// (0) (1) (3) (4) (7) (8) (10) (11)
|
||||||
|
//
|
||||||
|
// so (15) is truncated
|
||||||
|
// and new root, (14) is a stored one now
|
||||||
|
|
||||||
match delete_tx.new_root {
|
match delete_tx.new_root {
|
||||||
NodeLink::Stored(14) => { /* ok */ },
|
NodeLink::Stored(14) => { /* ok */ },
|
||||||
_ => panic!("Root should be stored(14)")
|
_ => panic!("Root should be stored(14)")
|
||||||
}
|
}
|
||||||
|
assert_eq!(tree.len(), 15);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -373,11 +398,36 @@ mod tests {
|
|||||||
let (mut tree, root) = generated(10);
|
let (mut tree, root) = generated(10);
|
||||||
let delete_tx = tree.truncate_leaf(root);
|
let delete_tx = tree.truncate_leaf(root);
|
||||||
|
|
||||||
|
// initial tree:
|
||||||
|
//
|
||||||
|
// (--------18g--------)
|
||||||
|
// / \
|
||||||
|
// (--------14-------) \
|
||||||
|
// / \ \
|
||||||
|
// ( 6 ) ( 13 ) \
|
||||||
|
// / \ / \ \
|
||||||
|
// (2) (5) (9) (12) (17)
|
||||||
|
// / \ / \ / \ / \ / \
|
||||||
|
// (0) (1) (3) (4) (7) (8) (10) (11) (15) (16)
|
||||||
|
//
|
||||||
|
// new tree:
|
||||||
|
// (-------16g------)
|
||||||
|
// / \
|
||||||
|
// (--------14-------) \
|
||||||
|
// / \ \
|
||||||
|
// ( 6 ) ( 13 ) \
|
||||||
|
// / \ / \ \
|
||||||
|
// (2) (5) (9) (12) \
|
||||||
|
// / \ / \ / \ / \ \
|
||||||
|
// (0) (1) (3) (4) (7) (8) (10) (11) (15)
|
||||||
|
|
||||||
|
// new root is generated
|
||||||
match delete_tx.new_root {
|
match delete_tx.new_root {
|
||||||
NodeLink::Generated(_) => { /* ok */ },
|
NodeLink::Generated(_) => { /* ok */ },
|
||||||
_ => panic!("Root now should be generated")
|
_ => panic!("Root now should be generated")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// left is 14 and right is 15
|
||||||
let (left_root_child, right_root_child) = {
|
let (left_root_child, right_root_child) = {
|
||||||
let root = tree.resolve_link(delete_tx.new_root);
|
let root = tree.resolve_link(delete_tx.new_root);
|
||||||
|
|
||||||
@@ -386,12 +436,10 @@ mod tests {
|
|||||||
root.node.right.expect("there should be right child for root"),
|
root.node.right.expect("there should be right child for root"),
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
match (left_root_child, right_root_child) {
|
match (left_root_child, right_root_child) {
|
||||||
(NodeLink::Stored(14), NodeLink::Stored(15)) => { /* ok */ },
|
(NodeLink::Stored(14), NodeLink::Stored(15)) => { /* ok */ },
|
||||||
_ => panic!("Root should have s(14) and s(15) children")
|
_ => panic!("Root should have s(14) and s(15) children")
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(delete_tx.truncated, 2);
|
assert_eq!(delete_tx.truncated, 2);
|
||||||
assert_eq!(tree.len(), 16);
|
assert_eq!(tree.len(), 16);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user