]> source.dussan.org Git - sonarqube.git/commitdiff
MeasureRepoEntry must compare variations value rounded to 1 decimal
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Tue, 7 Jul 2015 14:52:39 +0000 (16:52 +0200)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Thu, 9 Jul 2015 07:24:48 +0000 (09:24 +0200)
this is much more convenient for tests

server/sonar-server/src/test/java/org/sonar/server/computation/measure/MeasureRepoEntry.java

index ee8bc5905c0b63896159b78fb184811fd426cae4..a5cd825c9177ca7e478946221a51e99fb871d0c0 100644 (file)
@@ -22,6 +22,8 @@ package org.sonar.server.computation.measure;
 import com.google.common.base.Function;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.SetMultimap;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Map;
 import java.util.Objects;
 import javax.annotation.Nonnull;
@@ -107,7 +109,25 @@ public final class MeasureRepoEntry {
     if (!measure.hasVariations()) {
       return true;
     }
-    return Objects.equals(measure.getVariations(), measure1.getVariations());
+    MeasureVariations variations = measure.getVariations();
+    MeasureVariations variations1 = measure1.getVariations();
+    for (int i = 1; i <= 5; i++) {
+      if (variations.hasVariation(i) != variations1.hasVariation(i)) {
+        return false;
+      }
+      if (variations.hasVariation(i)
+          && Double.compare(scale(variations.getVariation(i)), scale(variations1.getVariation(i))) != 0) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  private static final int DOUBLE_PRECISION = 1;
+
+  private static double scale(double value) {
+    BigDecimal bd = BigDecimal.valueOf(value);
+    return bd.setScale(DOUBLE_PRECISION, RoundingMode.HALF_UP).doubleValue();
   }
 
   private static boolean equalsByQualityGateStatus(Measure measure, Measure measure1) {