Selaa lähdekoodia

[consensus] fix sigmas test case precision limit

mohab metwally 3 vuotta sitten
vanhempi
sitoutus
7e4464d005
1 muutettua tiedostoa jossa 17 lisäystä ja 8 poistoa
  1. 17 8
      src/consensus/state.rs

+ 17 - 8
src/consensus/state.rs

@@ -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);
     }
 }