Skip to content
Snippets Groups Projects
Commit 14b9f289 authored by Cédric Moreau's avatar Cédric Moreau
Browse files

Resolve #275 "[test] UD out of reeval window" (!301)

* refac: comments + renaming `ud_index` which is confusiong

* test: unclaimed UDs out of UD reeval window
parent 0f671ac6
No related branches found
No related tags found
1 merge request!301Resolve "[test] UD out of reeval window"
Pipeline #39418 waiting for manual action
......@@ -24,18 +24,22 @@ pub(super) fn compute_claim_uds<Balance: AtLeast32BitUnsigned>(
) -> (UdIndex, Balance) {
let mut total_amount = Zero::zero();
let mut total_count = 0;
for (ud_index, ud_amount) in past_reevals.rev() {
if ud_index <= first_ud_index {
// We start in reverse order, i.e. the most recent reeval first
for (reeval_index, ud_amount) in past_reevals.rev() {
// Therefore, if our first UD is above the current reeval index, we have reached our final useful reeval and must break
if reeval_index <= first_ud_index {
let count = current_ud_index - first_ud_index;
total_amount += Balance::from(count) * ud_amount;
total_count += count;
// First unclaimed UD is reached; stop counting now.
break;
} else {
let count = current_ud_index - ud_index;
}
// Otherwise, we consume the full reeval contained UDs
else {
let count = current_ud_index - reeval_index;
total_amount += Balance::from(count) * ud_amount;
total_count += count;
current_ud_index = ud_index;
current_ud_index = reeval_index;
}
}
......@@ -109,4 +113,19 @@ mod tests {
(2, 110_000)
);
}
#[test]
fn very_old_unclaimed_ud_out_of_reevals() {
let past_reevals = vec![
// (3, 100 as Balance), "old" reeval which has gone out of reevals window.
(4, 1_000 as Balance),
(5, 10_000 as Balance),
(6, 100_000 as Balance),
];
// All the UDs out of the reeval window must produce 0 money units
assert_eq!(
compute_claim_uds(7, 1, past_reevals.into_iter()),
(3, 111_000)
);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment