static void updateMeasureBuilder(Measure.Builder measureBuilder, MetricDto metric, double doubleValue, @Nullable String stringValue, double variation) { measureBuilder.setMetric(metric.getKey()); Double bestValue = metric.getBestValue(); // a measure value can be null, new_violations metric for example if (!Double.isNaN(doubleValue) || stringValue != null) { measureBuilder.setValue(formatMeasureValue(doubleValue, stringValue, metric)); ofNullable(bestValue).ifPresent(v -> measureBuilder.setBestValue(compare(doubleValue, v) == 0)); } Measures.PeriodValue.Builder periodBuilder = Measures.PeriodValue.newBuilder(); if (Double.isNaN(variation)) { return; } Measures.PeriodValue.Builder builderForValue = periodBuilder .clear() .setIndex(1) .setValue(formatNumericalValue(variation, metric)); ofNullable(bestValue).ifPresent(v -> builderForValue.setBestValue(compare(variation, v) == 0)); measureBuilder.getPeriodsBuilder().addPeriodsValue(builderForValue); } }
.extracting(Measure::getMetric, m -> m.getPeriods().getPeriodsValueList()) .containsExactlyInAnyOrder( tuple(matchingBestValue.getKey(), singletonList(PeriodValue.newBuilder().setIndex(1).setValue("100").setBestValue(true).build())), tuple(doesNotMatchBestValue.getKey(), singletonList(PeriodValue.newBuilder().setIndex(1).setValue("10").setBestValue(false).build())), tuple(noBestValue.getKey(), singletonList(PeriodValue.newBuilder().setIndex(1).setValue("42").build())));
static void updateMeasureBuilder(Measure.Builder measureBuilder, MetricDto metric, double doubleValue, @Nullable String stringValue, double variation) { measureBuilder.setMetric(metric.getKey()); Double bestValue = metric.getBestValue(); // a measure value can be null, new_violations metric for example if (!Double.isNaN(doubleValue) || stringValue != null) { measureBuilder.setValue(formatMeasureValue(doubleValue, stringValue, metric)); setNullable(bestValue, v -> measureBuilder.setBestValue(doubleValue == v)); } Measures.PeriodValue.Builder periodBuilder = Measures.PeriodValue.newBuilder(); if (Double.isNaN(variation)) { return; } Measures.PeriodValue.Builder builderForValue = periodBuilder .clear() .setIndex(1) .setValue(formatNumericalValue(variation, metric)); setNullable(bestValue, v -> builderForValue.setBestValue(variation == v)); measureBuilder.getPeriodsBuilder().addPeriodsValue(builderForValue); } }