use super::{AdmissibleFloor, admissible_installed_floor, floor_transition, marker_clamped_floor};
#[test]
fn the_marker_clamp_lowers_where_cap_floor_raises() {
let marker = 7_u64;
let computed = 12_u128;
let raised = floor_transition(1, Some(11), 11, 11, u128::from(marker)).resulting_floor;
assert_eq!(raised, computed);
assert!(raised > u128::from(marker));
assert_eq!(marker_clamped_floor(computed, Some(marker)), 7);
}
#[test]
fn an_empty_marker_set_passes_the_computed_floor_through_unchanged() {
assert_eq!(marker_clamped_floor(0, None), 0);
assert_eq!(marker_clamped_floor(41, None), 41);
assert_eq!(
marker_clamped_floor(u128::from(u64::MAX) + 1, None),
u128::from(u64::MAX) + 1
);
}
#[test]
fn the_clamp_target_is_the_marker_itself_and_not_one_below_it() {
assert_eq!(marker_clamped_floor(9, Some(9)), 9);
assert_eq!(marker_clamped_floor(10, Some(9)), 9);
assert_eq!(marker_clamped_floor(8, Some(9)), 8);
}
#[test]
fn a_marker_at_the_retained_floor_pins_it_where_it_stands() {
let installed = admissible_installed_floor(20, 9, Some(9), 30);
assert_eq!(installed, AdmissibleFloor::Install(9));
}
#[test]
fn an_admissible_floor_is_bounded_by_the_current_high_watermark() {
assert_eq!(
admissible_installed_floor(99, 3, None, 10),
AdmissibleFloor::Install(11)
);
assert_eq!(
admissible_installed_floor(99, 3, Some(6), 10),
AdmissibleFloor::Install(6)
);
assert_eq!(
admissible_installed_floor(5, 3, Some(6), 10),
AdmissibleFloor::Install(5)
);
}
#[test]
fn a_measurement_the_frontier_moved_past_is_subsumed() {
assert_eq!(
admissible_installed_floor(4, 9, None, 30),
AdmissibleFloor::Subsumed
);
assert_eq!(
admissible_installed_floor(20, 9, Some(4), 30),
AdmissibleFloor::Subsumed
);
assert_eq!(
admissible_installed_floor(9, 9, None, 30),
AdmissibleFloor::Install(9)
);
}
#[test]
fn the_remint_never_raises_the_measured_floor() {
assert_eq!(
admissible_installed_floor(5, 3, None, 100),
AdmissibleFloor::Install(5)
);
assert_eq!(
admissible_installed_floor(3, 3, None, 100),
AdmissibleFloor::Install(3)
);
}
#[test]
fn multiple_claims_match_the_document_floor_walk() {
let floor = floor_transition(1, Some(10), 100, 100, 25);
assert_eq!(floor.member_cursor, 10);
assert_eq!(floor.preferred_floor, 11);
assert_eq!(floor.resulting_floor, 25);
}
#[test]
fn final_leave_substitutes_candidate_watermark_for_empty_membership() {
let after_leave = floor_transition(1, None, 101, 100, 101);
assert_eq!(after_leave.member_cursor, 101);
assert_eq!(after_leave.preferred_floor, 101);
assert_eq!(after_leave.resulting_floor, 101);
let after_projection = floor_transition(101, None, 101, 101, 102);
assert_eq!(after_projection.preferred_floor, 102);
assert_eq!(after_projection.resulting_floor, 102);
}
#[test]
fn a_late_cursor_zero_member_never_lowers_the_floor() {
let floor = floor_transition(25, Some(0), 101, 100, 25);
assert_eq!(floor.preferred_floor, 1);
assert_eq!(floor.resulting_floor, 25);
}
#[test]
fn one_past_maximum_is_representable() {
let floor = floor_transition(
u128::from(u64::MAX),
None,
u64::MAX,
u64::MAX,
u128::from(u64::MAX) + 1,
);
assert_eq!(floor.preferred_floor, u128::from(u64::MAX) + 1);
assert_eq!(floor.resulting_floor, u128::from(u64::MAX) + 1);
}