|
|
@@ -958,10 +958,11 @@ mod tests {
|
|
|
|
|
|
#[test]
|
|
|
fn calc_sigmas_test() {
|
|
|
- let giga_epsilon =
|
|
|
- Float10::try_from("1000000000000000000000000000000000000000000000000000000000000000000000000")
|
|
|
- .unwrap();
|
|
|
- let giga_epsilon_base = fbig2base(giga_epsilon);
|
|
|
+ let precision_diff = Float10::try_from(
|
|
|
+ "10000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
|
+ )
|
|
|
+ .unwrap();
|
|
|
+ let precision_diff_base = fbig2base(precision_diff);
|
|
|
let f = Float10::try_from("0.01").unwrap();
|
|
|
let total_stake = Float10::try_from("100").unwrap();
|
|
|
let (sigma1, sigma2) = ConsensusState::calc_sigmas(f, total_stake);
|
|
|
@@ -975,11 +976,19 @@ mod tests {
|
|
|
)
|
|
|
.unwrap();
|
|
|
let sigma2_rhs_base = fbig2base(sigma2_rhs);
|
|
|
- let sigma1_delta = sigma1_rhs_base - sigma1;
|
|
|
- let sigma2_delta = sigma2_rhs_base - sigma2;
|
|
|
+ let sigma1_delta = if sigma1_rhs_base > sigma1 {
|
|
|
+ sigma1_rhs_base - sigma1
|
|
|
+ } else {
|
|
|
+ sigma1 - sigma1_rhs_base
|
|
|
+ };
|
|
|
+ let sigma2_delta = if sigma2_rhs_base > sigma2 {
|
|
|
+ sigma2_rhs_base - sigma2
|
|
|
+ } else {
|
|
|
+ sigma2 - sigma2_rhs_base
|
|
|
+ };
|
|
|
//note! test cases were generated by low precision python scripts.
|
|
|
//https://github.com/ertosns/lotterysim/blob/master/pallas_unittests.csv
|
|
|
- assert!(sigma1_delta < giga_epsilon_base);
|
|
|
- assert!(sigma2_delta < giga_epsilon_base);
|
|
|
+ assert!(sigma1_delta < precision_diff_base);
|
|
|
+ assert!(sigma2_delta < precision_diff_base);
|
|
|
}
|
|
|
}
|