incrementalmerkletree: Document `Address::common_ancestor` test cases

Also adds a couple more test cases that pass.
This commit is contained in:
Jack Grigg 2023-07-06 12:16:15 +00:00
parent b604c801a8
commit 4a34bf0032
1 changed files with 70 additions and 0 deletions

View File

@ -827,25 +827,95 @@ pub(crate) mod tests {
#[test]
fn addr_common_ancestor() {
// rt
// --------------- ----------------
// ------- ------- right -------
// ----- left ----- ----- ----- ----- ----- -----
// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
assert_eq!(
Address::from_parts(Level(2), 1).common_ancestor(&Address::from_parts(Level(3), 2)),
Address::from_parts(Level(5), 0)
);
// --------------------------
// --------------- ----------------
// ------- rt ------- -------
// ----- ----- left ----- ----- ----- ----- -----
// -- -- -- -- -- -- -- rg -- -- -- -- -- -- -- --
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
assert_eq!(
Address::from_parts(Level(2), 2).common_ancestor(&Address::from_parts(Level(1), 7)),
Address::from_parts(Level(3), 1)
);
// --------------------------
// --------------- ----------------
// ------- rt ------- -------
// ----- ----- left ----- ----- ----- ----- -----
// -- -- -- -- -- -- rg -- -- -- -- -- -- -- -- --
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
assert_eq!(
Address::from_parts(Level(2), 2).common_ancestor(&Address::from_parts(Level(1), 6)),
Address::from_parts(Level(3), 1)
);
// --------------------------
// --------------- ----------------
// ------- ------- ------- -------
// ----- ----- all ----- ----- ----- ----- -----
// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
assert_eq!(
Address::from_parts(Level(2), 2).common_ancestor(&Address::from_parts(Level(2), 2)),
Address::from_parts(Level(2), 2)
);
// --------------------------
// --------------- ----------------
// ------- ------- ------- -------
// ----- ----- lf,rt ----- ----- ----- ----- -----
// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
// - - - - - - - - - rg - - - - - - - - - - - - - - - - - - - - - -
assert_eq!(
Address::from_parts(Level(2), 2).common_ancestor(&Address::from_parts(Level(0), 9)),
Address::from_parts(Level(2), 2)
);
// --------------------------
// --------------- ----------------
// ------- ------- ------- -------
// ----- ----- rg,rt ----- ----- ----- ----- -----
// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
// - - - - - - - - - lf - - - - - - - - - - - - - - - - - - - - - -
assert_eq!(
Address::from_parts(Level(0), 9).common_ancestor(&Address::from_parts(Level(2), 2)),
Address::from_parts(Level(2), 2)
);
// --------------------------
// --------------- ----------------
// ------- ------- ------- -------
// ----- ----- ----- rt ----- ----- ----- -----
// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
// - - - - - - - - - - - - lf - - rg - - - - - - - - - - - - - - - -
assert_eq!(
Address::from_parts(Level(0), 12).common_ancestor(&Address::from_parts(Level(0), 15)),
Address::from_parts(Level(2), 3)
);
// --------------------------
// --------------- ----------------
// ------- ------- ------- -------
// ----- ----- ----- rt ----- ----- ----- -----
// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
// - - - - - - - - - - - - - lf - rg - - - - - - - - - - - - - - - -
assert_eq!(
Address::from_parts(Level(0), 13).common_ancestor(&Address::from_parts(Level(0), 15)),
Address::from_parts(Level(2), 3)
);
// --------------------------
// --------------- ----------------
// ------- ------- ------- -------
// ----- ----- ----- ----- ----- ----- ----- -----
// -- -- -- -- -- -- -- rt -- -- -- -- -- -- -- --
// - - - - - - - - - - - - - - lf rg - - - - - - - - - - - - - - - -
assert_eq!(
Address::from_parts(Level(0), 14).common_ancestor(&Address::from_parts(Level(0), 15)),
Address::from_parts(Level(1), 7)
);
}
}