diff options
author | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2015-08-20 12:46:21 +0200 |
---|---|---|
committer | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2015-08-24 14:00:32 +0200 |
commit | 7e1b42f565532e6a96619d044926fbdbe9f61066 (patch) | |
tree | 6b84ba31af0ff08e293076952db33b5482aae852 /server | |
parent | df279e84e4edc6d8d602656c7b18a38f16f3ea2f (diff) | |
download | sonarqube-7e1b42f565532e6a96619d044926fbdbe9f61066.tar.gz sonarqube-7e1b42f565532e6a96619d044926fbdbe9f61066.zip |
make CoverageMeasuresStep support Views Component tree
Diffstat (limited to 'server')
-rw-r--r-- | server/sonar-server/src/main/java/org/sonar/server/computation/formula/coverage/CoverageFormula.java | 4 | ||||
-rw-r--r-- | server/sonar-server/src/main/java/org/sonar/server/computation/formula/coverage/ElementsAndCoveredElementsCounter.java | 4 | ||||
-rw-r--r-- | server/sonar-server/src/test/java/org/sonar/server/computation/step/ReportCoverageMeasuresStepTest.java (renamed from server/sonar-server/src/test/java/org/sonar/server/computation/step/CoverageMeasuresStepTest.java) | 48 | ||||
-rw-r--r-- | server/sonar-server/src/test/java/org/sonar/server/computation/step/ViewsCoverageMeasuresStepTest.java | 231 |
4 files changed, 258 insertions, 29 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/formula/coverage/CoverageFormula.java b/server/sonar-server/src/main/java/org/sonar/server/computation/formula/coverage/CoverageFormula.java index 1521df8f9d0..2e42d0e5068 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/formula/coverage/CoverageFormula.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/formula/coverage/CoverageFormula.java @@ -20,6 +20,7 @@ package org.sonar.server.computation.formula.coverage; import com.google.common.base.Optional; +import org.sonar.server.computation.component.Component; import org.sonar.server.computation.formula.Counter; import org.sonar.server.computation.formula.CreateMeasureContext; import org.sonar.server.computation.formula.Formula; @@ -36,6 +37,9 @@ public abstract class CoverageFormula<T extends ElementsAndCoveredElementsCounte @Override public Optional<Measure> createMeasure(T counter, CreateMeasureContext context) { + if (context.getComponent().getType() == Component.Type.PROJECT_VIEW) { + return Optional.absent(); + } long elements = counter.elements; long coveredElements = counter.coveredElements; if (elements > 0L) { diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/formula/coverage/ElementsAndCoveredElementsCounter.java b/server/sonar-server/src/main/java/org/sonar/server/computation/formula/coverage/ElementsAndCoveredElementsCounter.java index 38ef6f50284..b78ec62fee3 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/formula/coverage/ElementsAndCoveredElementsCounter.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/formula/coverage/ElementsAndCoveredElementsCounter.java @@ -19,6 +19,7 @@ */ package org.sonar.server.computation.formula.coverage; +import org.sonar.server.computation.component.Component; import org.sonar.server.computation.formula.Counter; import org.sonar.server.computation.formula.LeafAggregateContext; @@ -37,7 +38,8 @@ public abstract class ElementsAndCoveredElementsCounter implements Counter<Eleme @Override public void aggregate(LeafAggregateContext context) { - if (context.getLeaf().getFileAttributes().isUnitTest()) { + Component component = context.getLeaf(); + if (component.getType().isReportType() && component.getFileAttributes().isUnitTest()) { return; } aggregateForSupportedLeaf(context); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/CoverageMeasuresStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/ReportCoverageMeasuresStepTest.java index a8d3fc9a5dd..220773de571 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/CoverageMeasuresStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/ReportCoverageMeasuresStepTest.java @@ -40,7 +40,7 @@ import static org.sonar.server.computation.measure.Measure.newMeasureBuilder; import static org.sonar.server.computation.measure.MeasureRepoEntry.entryOf; import static org.sonar.server.computation.measure.MeasureRepoEntry.toEntries; -public class CoverageMeasuresStepTest { +public class ReportCoverageMeasuresStepTest { private static final int ROOT_REF = 1; private static final int MODULE_REF = 12; private static final int SUB_MODULE_REF = 123; @@ -51,7 +51,7 @@ public class CoverageMeasuresStepTest { @Rule public TreeRootHolderRule treeRootHolder = new TreeRootHolderRule(); - + @Rule public MetricRepositoryRule metricRepository = new MetricRepositoryRule() .add(CoreMetrics.LINES_TO_COVER) @@ -62,7 +62,7 @@ public class CoverageMeasuresStepTest { .add(CoreMetrics.BRANCH_COVERAGE) .add(CoreMetrics.LINE_COVERAGE) - .add(CoreMetrics.IT_LINES_TO_COVER) + .add(CoreMetrics.IT_LINES_TO_COVER) .add(CoreMetrics.IT_CONDITIONS_TO_COVER) .add(CoreMetrics.IT_UNCOVERED_LINES) .add(CoreMetrics.IT_UNCOVERED_CONDITIONS) @@ -70,7 +70,7 @@ public class CoverageMeasuresStepTest { .add(CoreMetrics.IT_BRANCH_COVERAGE) .add(CoreMetrics.IT_LINE_COVERAGE) - .add(CoreMetrics.OVERALL_LINES_TO_COVER) + .add(CoreMetrics.OVERALL_LINES_TO_COVER) .add(CoreMetrics.OVERALL_CONDITIONS_TO_COVER) .add(CoreMetrics.OVERALL_UNCOVERED_LINES) .add(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS) @@ -95,19 +95,18 @@ public class CoverageMeasuresStepTest { .addChildren( builder(FILE, FILE_1_REF).build(), builder(FILE, UNIT_TEST_FILE_REF).setFileAttributes(new FileAttributes(true, "some language")).build(), - builder(FILE, FILE_2_REF).build() - ).build() - ).build() - ).build() - ).build()); + builder(FILE, FILE_2_REF).build()) + .build()) + .build()) + .build()) + .build()); } @Test public void verify_aggregates_values_for_ut_lines_and_conditions() { LinesAndConditionsWithUncoveredMetricKeys metricKeys = new LinesAndConditionsWithUncoveredMetricKeys( CoreMetrics.LINES_TO_COVER_KEY, CoreMetrics.CONDITIONS_TO_COVER_KEY, - CoreMetrics.UNCOVERED_LINES_KEY, CoreMetrics.UNCOVERED_CONDITIONS_KEY - ); + CoreMetrics.UNCOVERED_LINES_KEY, CoreMetrics.UNCOVERED_CONDITIONS_KEY); verify_lines_and_conditions_aggregates_values(metricKeys); } @@ -115,8 +114,7 @@ public class CoverageMeasuresStepTest { public void verify_aggregates_values_for_it_lines_and_conditions() { LinesAndConditionsWithUncoveredMetricKeys metricKeys = new LinesAndConditionsWithUncoveredMetricKeys( CoreMetrics.IT_LINES_TO_COVER_KEY, CoreMetrics.IT_CONDITIONS_TO_COVER_KEY, - CoreMetrics.IT_UNCOVERED_LINES_KEY, CoreMetrics.IT_UNCOVERED_CONDITIONS_KEY - ); + CoreMetrics.IT_UNCOVERED_LINES_KEY, CoreMetrics.IT_UNCOVERED_CONDITIONS_KEY); verify_lines_and_conditions_aggregates_values(metricKeys); } @@ -124,8 +122,7 @@ public class CoverageMeasuresStepTest { public void verify_aggregates_values_for_overall_lines_and_conditions() { LinesAndConditionsWithUncoveredMetricKeys metricKeys = new LinesAndConditionsWithUncoveredMetricKeys( CoreMetrics.OVERALL_LINES_TO_COVER_KEY, CoreMetrics.OVERALL_CONDITIONS_TO_COVER_KEY, - CoreMetrics.OVERALL_UNCOVERED_LINES_KEY, CoreMetrics.OVERALL_UNCOVERED_CONDITIONS_KEY - ); + CoreMetrics.OVERALL_UNCOVERED_LINES_KEY, CoreMetrics.OVERALL_UNCOVERED_CONDITIONS_KEY); verify_lines_and_conditions_aggregates_values(metricKeys); } @@ -136,7 +133,7 @@ public class CoverageMeasuresStepTest { .addRawMeasure(FILE_1_REF, metricKeys.getUncoveredLines(), newMeasureBuilder().create(30)) .addRawMeasure(FILE_1_REF, metricKeys.getUncoveredConditions(), newMeasureBuilder().create(9)) - .addRawMeasure(FILE_2_REF, metricKeys.getLines(), newMeasureBuilder().create(2000)) + .addRawMeasure(FILE_2_REF, metricKeys.getLines(), newMeasureBuilder().create(2000)) .addRawMeasure(FILE_2_REF, metricKeys.getConditions(), newMeasureBuilder().create(400)) .addRawMeasure(FILE_2_REF, metricKeys.getUncoveredLines(), newMeasureBuilder().create(200)) .addRawMeasure(FILE_2_REF, metricKeys.getUncoveredConditions(), newMeasureBuilder().create(16)); @@ -145,7 +142,7 @@ public class CoverageMeasuresStepTest { MeasureRepoEntry[] nonFileRepoEntries = { entryOf(metricKeys.getLines(), newMeasureBuilder().create(5000)), - entryOf( metricKeys.getConditions(), newMeasureBuilder().create(700)), + entryOf(metricKeys.getConditions(), newMeasureBuilder().create(700)), entryOf(metricKeys.getUncoveredLines(), newMeasureBuilder().create(230)), entryOf(metricKeys.getUncoveredConditions(), newMeasureBuilder().create(25)) }; @@ -160,8 +157,7 @@ public class CoverageMeasuresStepTest { public void verify_aggregates_values_for_code_line_and_branch_coverage() { LinesAndConditionsWithUncoveredMetricKeys metricKeys = new LinesAndConditionsWithUncoveredMetricKeys( CoreMetrics.LINES_TO_COVER_KEY, CoreMetrics.CONDITIONS_TO_COVER_KEY, - CoreMetrics.UNCOVERED_LINES_KEY, CoreMetrics.UNCOVERED_CONDITIONS_KEY - ); + CoreMetrics.UNCOVERED_LINES_KEY, CoreMetrics.UNCOVERED_CONDITIONS_KEY); String codeCoverageKey = CoreMetrics.COVERAGE_KEY; String lineCoverageKey = CoreMetrics.LINE_COVERAGE_KEY; String branchCoverageKey = CoreMetrics.BRANCH_COVERAGE_KEY; @@ -173,8 +169,7 @@ public class CoverageMeasuresStepTest { public void verify_aggregates_values_for_IT_code_line_and_branch_coverage() { LinesAndConditionsWithUncoveredMetricKeys metricKeys = new LinesAndConditionsWithUncoveredMetricKeys( CoreMetrics.IT_LINES_TO_COVER_KEY, CoreMetrics.IT_CONDITIONS_TO_COVER_KEY, - CoreMetrics.IT_UNCOVERED_LINES_KEY, CoreMetrics.IT_UNCOVERED_CONDITIONS_KEY - ); + CoreMetrics.IT_UNCOVERED_LINES_KEY, CoreMetrics.IT_UNCOVERED_CONDITIONS_KEY); String codeCoverageKey = CoreMetrics.IT_COVERAGE_KEY; String lineCoverageKey = CoreMetrics.IT_LINE_COVERAGE_KEY; String branchCoverageKey = CoreMetrics.IT_BRANCH_COVERAGE_KEY; @@ -186,8 +181,7 @@ public class CoverageMeasuresStepTest { public void verify_aggregates_values_for_Overall_code_line_and_branch_coverage() { LinesAndConditionsWithUncoveredMetricKeys metricKeys = new LinesAndConditionsWithUncoveredMetricKeys( CoreMetrics.OVERALL_LINES_TO_COVER_KEY, CoreMetrics.OVERALL_CONDITIONS_TO_COVER_KEY, - CoreMetrics.OVERALL_UNCOVERED_LINES_KEY, CoreMetrics.OVERALL_UNCOVERED_CONDITIONS_KEY - ); + CoreMetrics.OVERALL_UNCOVERED_LINES_KEY, CoreMetrics.OVERALL_UNCOVERED_CONDITIONS_KEY); String codeCoverageKey = CoreMetrics.OVERALL_COVERAGE_KEY; String lineCoverageKey = CoreMetrics.OVERALL_LINE_COVERAGE_KEY; String branchCoverageKey = CoreMetrics.OVERALL_BRANCH_COVERAGE_KEY; @@ -202,7 +196,7 @@ public class CoverageMeasuresStepTest { .addRawMeasure(FILE_1_REF, metricKeys.getUncoveredLines(), newMeasureBuilder().create(30)) .addRawMeasure(FILE_1_REF, metricKeys.getUncoveredConditions(), newMeasureBuilder().create(9)) - .addRawMeasure(FILE_2_REF, metricKeys.getLines(), newMeasureBuilder().create(2000)) + .addRawMeasure(FILE_2_REF, metricKeys.getLines(), newMeasureBuilder().create(2000)) .addRawMeasure(FILE_2_REF, metricKeys.getConditions(), newMeasureBuilder().create(400)) .addRawMeasure(FILE_2_REF, metricKeys.getUncoveredLines(), newMeasureBuilder().create(200)) .addRawMeasure(FILE_2_REF, metricKeys.getUncoveredConditions(), newMeasureBuilder().create(16)); @@ -212,13 +206,11 @@ public class CoverageMeasuresStepTest { assertThat(toEntries(measureRepository.getAddedRawMeasures(FILE_1_REF))).contains( entryOf(codeCoverageKey, newMeasureBuilder().create(98.8d)), entryOf(lineCoverageKey, newMeasureBuilder().create(99d)), - entryOf(branchCoverageKey, newMeasureBuilder().create(97d)) - ); + entryOf(branchCoverageKey, newMeasureBuilder().create(97d))); assertThat(toEntries(measureRepository.getAddedRawMeasures(FILE_2_REF))).contains( entryOf(codeCoverageKey, newMeasureBuilder().create(91d)), entryOf(lineCoverageKey, newMeasureBuilder().create(90d)), - entryOf(branchCoverageKey, newMeasureBuilder().create(96d)) - ); + entryOf(branchCoverageKey, newMeasureBuilder().create(96d))); assertThat(toEntries(measureRepository.getAddedRawMeasures(UNIT_TEST_FILE_REF))).isEmpty(); MeasureRepoEntry[] nonFileRepoEntries = { diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/ViewsCoverageMeasuresStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/ViewsCoverageMeasuresStepTest.java new file mode 100644 index 00000000000..9d454dec179 --- /dev/null +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/ViewsCoverageMeasuresStepTest.java @@ -0,0 +1,231 @@ +/* + * SonarQube, open source software quality management tool. + * Copyright (C) 2008-2014 SonarSource + * mailto:contact AT sonarsource DOT com + * + * SonarQube is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * SonarQube is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.server.computation.step; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.sonar.api.measures.CoreMetrics; +import org.sonar.server.computation.batch.TreeRootHolderRule; +import org.sonar.server.computation.formula.coverage.LinesAndConditionsWithUncoveredMetricKeys; +import org.sonar.server.computation.measure.MeasureRepoEntry; +import org.sonar.server.computation.measure.MeasureRepositoryRule; +import org.sonar.server.computation.metric.MetricRepositoryRule; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.sonar.server.computation.component.Component.Type.PROJECT_VIEW; +import static org.sonar.server.computation.component.Component.Type.SUBVIEW; +import static org.sonar.server.computation.component.Component.Type.VIEW; +import static org.sonar.server.computation.component.ViewsComponent.builder; +import static org.sonar.server.computation.measure.Measure.newMeasureBuilder; +import static org.sonar.server.computation.measure.MeasureRepoEntry.entryOf; +import static org.sonar.server.computation.measure.MeasureRepoEntry.toEntries; + +public class ViewsCoverageMeasuresStepTest { + private static final int ROOT_REF = 1; + private static final int SUBVIEW_REF = 12; + private static final int SUB_SUBVIEW_REF = 121; + private static final int PROJECTVIEW_1_REF = 1211; + private static final int PROJECTVIEW_2_REF = 1212; + private static final int PROJECTVIEW_3_REF = 123; + + @Rule + public TreeRootHolderRule treeRootHolder = new TreeRootHolderRule(); + + @Rule + public MetricRepositoryRule metricRepository = new MetricRepositoryRule() + .add(CoreMetrics.LINES_TO_COVER) + .add(CoreMetrics.CONDITIONS_TO_COVER) + .add(CoreMetrics.UNCOVERED_LINES) + .add(CoreMetrics.UNCOVERED_CONDITIONS) + .add(CoreMetrics.COVERAGE) + .add(CoreMetrics.BRANCH_COVERAGE) + .add(CoreMetrics.LINE_COVERAGE) + + .add(CoreMetrics.IT_LINES_TO_COVER) + .add(CoreMetrics.IT_CONDITIONS_TO_COVER) + .add(CoreMetrics.IT_UNCOVERED_LINES) + .add(CoreMetrics.IT_UNCOVERED_CONDITIONS) + .add(CoreMetrics.IT_COVERAGE) + .add(CoreMetrics.IT_BRANCH_COVERAGE) + .add(CoreMetrics.IT_LINE_COVERAGE) + + .add(CoreMetrics.OVERALL_LINES_TO_COVER) + .add(CoreMetrics.OVERALL_CONDITIONS_TO_COVER) + .add(CoreMetrics.OVERALL_UNCOVERED_LINES) + .add(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS) + .add(CoreMetrics.OVERALL_COVERAGE) + .add(CoreMetrics.OVERALL_BRANCH_COVERAGE) + .add(CoreMetrics.OVERALL_LINE_COVERAGE); + @Rule + public MeasureRepositoryRule measureRepository = MeasureRepositoryRule.create(treeRootHolder, metricRepository); + + CoverageMeasuresStep underTest = new CoverageMeasuresStep(treeRootHolder, metricRepository, measureRepository); + + @Before + public void setUp() throws Exception { + treeRootHolder.setRoot( + builder(VIEW, ROOT_REF) + .addChildren( + builder(SUBVIEW, SUBVIEW_REF) + .addChildren( + builder(SUBVIEW, SUB_SUBVIEW_REF) + .addChildren( + builder(PROJECT_VIEW, PROJECTVIEW_1_REF).build(), + builder(PROJECT_VIEW, PROJECTVIEW_2_REF).build()) + .build()) + .build(), + builder(PROJECT_VIEW, PROJECTVIEW_3_REF).build()) + .build()); + } + + @Test + public void verify_aggregates_values_for_ut_lines_and_conditions() { + LinesAndConditionsWithUncoveredMetricKeys metricKeys = new LinesAndConditionsWithUncoveredMetricKeys( + CoreMetrics.LINES_TO_COVER_KEY, CoreMetrics.CONDITIONS_TO_COVER_KEY, + CoreMetrics.UNCOVERED_LINES_KEY, CoreMetrics.UNCOVERED_CONDITIONS_KEY); + verify_lines_and_conditions_aggregates_values(metricKeys); + } + + @Test + public void verify_aggregates_values_for_it_lines_and_conditions() { + LinesAndConditionsWithUncoveredMetricKeys metricKeys = new LinesAndConditionsWithUncoveredMetricKeys( + CoreMetrics.IT_LINES_TO_COVER_KEY, CoreMetrics.IT_CONDITIONS_TO_COVER_KEY, + CoreMetrics.IT_UNCOVERED_LINES_KEY, CoreMetrics.IT_UNCOVERED_CONDITIONS_KEY); + verify_lines_and_conditions_aggregates_values(metricKeys); + } + + @Test + public void verify_aggregates_values_for_overall_lines_and_conditions() { + LinesAndConditionsWithUncoveredMetricKeys metricKeys = new LinesAndConditionsWithUncoveredMetricKeys( + CoreMetrics.OVERALL_LINES_TO_COVER_KEY, CoreMetrics.OVERALL_CONDITIONS_TO_COVER_KEY, + CoreMetrics.OVERALL_UNCOVERED_LINES_KEY, CoreMetrics.OVERALL_UNCOVERED_CONDITIONS_KEY); + verify_lines_and_conditions_aggregates_values(metricKeys); + } + + private void verify_lines_and_conditions_aggregates_values(LinesAndConditionsWithUncoveredMetricKeys metricKeys) { + measureRepository + .addRawMeasure(PROJECTVIEW_1_REF, metricKeys.getLines(), newMeasureBuilder().create(3000)) + .addRawMeasure(PROJECTVIEW_1_REF, metricKeys.getConditions(), newMeasureBuilder().create(300)) + .addRawMeasure(PROJECTVIEW_1_REF, metricKeys.getUncoveredLines(), newMeasureBuilder().create(30)) + .addRawMeasure(PROJECTVIEW_1_REF, metricKeys.getUncoveredConditions(), newMeasureBuilder().create(9)) + + .addRawMeasure(PROJECTVIEW_2_REF, metricKeys.getLines(), newMeasureBuilder().create(2000)) + .addRawMeasure(PROJECTVIEW_2_REF, metricKeys.getConditions(), newMeasureBuilder().create(400)) + .addRawMeasure(PROJECTVIEW_2_REF, metricKeys.getUncoveredLines(), newMeasureBuilder().create(200)) + .addRawMeasure(PROJECTVIEW_2_REF, metricKeys.getUncoveredConditions(), newMeasureBuilder().create(16)) + + .addRawMeasure(PROJECTVIEW_3_REF, metricKeys.getLines(), newMeasureBuilder().create(1000)) + .addRawMeasure(PROJECTVIEW_3_REF, metricKeys.getConditions(), newMeasureBuilder().create(500)) + .addRawMeasure(PROJECTVIEW_3_REF, metricKeys.getUncoveredLines(), newMeasureBuilder().create(300)) + .addRawMeasure(PROJECTVIEW_3_REF, metricKeys.getUncoveredConditions(), newMeasureBuilder().create(19)); + + underTest.execute(); + + MeasureRepoEntry[] subViewRepoEntries = { + entryOf(metricKeys.getLines(), newMeasureBuilder().create(5000)), + entryOf(metricKeys.getConditions(), newMeasureBuilder().create(700)), + entryOf(metricKeys.getUncoveredLines(), newMeasureBuilder().create(230)), + entryOf(metricKeys.getUncoveredConditions(), newMeasureBuilder().create(25)) + }; + + assertThat(toEntries(measureRepository.getAddedRawMeasures(SUB_SUBVIEW_REF))).contains(subViewRepoEntries); + assertThat(toEntries(measureRepository.getAddedRawMeasures(SUBVIEW_REF))).contains(subViewRepoEntries); + assertThat(toEntries(measureRepository.getAddedRawMeasures(ROOT_REF))).contains( + entryOf(metricKeys.getLines(), newMeasureBuilder().create(6000)), + entryOf(metricKeys.getConditions(), newMeasureBuilder().create(1200)), + entryOf(metricKeys.getUncoveredLines(), newMeasureBuilder().create(530)), + entryOf(metricKeys.getUncoveredConditions(), newMeasureBuilder().create(44))); + } + + @Test + public void verify_aggregates_values_for_code_line_and_branch_coverage() { + LinesAndConditionsWithUncoveredMetricKeys metricKeys = new LinesAndConditionsWithUncoveredMetricKeys( + CoreMetrics.LINES_TO_COVER_KEY, CoreMetrics.CONDITIONS_TO_COVER_KEY, + CoreMetrics.UNCOVERED_LINES_KEY, CoreMetrics.UNCOVERED_CONDITIONS_KEY); + String codeCoverageKey = CoreMetrics.COVERAGE_KEY; + String lineCoverageKey = CoreMetrics.LINE_COVERAGE_KEY; + String branchCoverageKey = CoreMetrics.BRANCH_COVERAGE_KEY; + + verify_coverage_aggregates_values(metricKeys, codeCoverageKey, lineCoverageKey, branchCoverageKey); + } + + @Test + public void verify_aggregates_values_for_IT_code_line_and_branch_coverage() { + LinesAndConditionsWithUncoveredMetricKeys metricKeys = new LinesAndConditionsWithUncoveredMetricKeys( + CoreMetrics.IT_LINES_TO_COVER_KEY, CoreMetrics.IT_CONDITIONS_TO_COVER_KEY, + CoreMetrics.IT_UNCOVERED_LINES_KEY, CoreMetrics.IT_UNCOVERED_CONDITIONS_KEY); + String codeCoverageKey = CoreMetrics.IT_COVERAGE_KEY; + String lineCoverageKey = CoreMetrics.IT_LINE_COVERAGE_KEY; + String branchCoverageKey = CoreMetrics.IT_BRANCH_COVERAGE_KEY; + + verify_coverage_aggregates_values(metricKeys, codeCoverageKey, lineCoverageKey, branchCoverageKey); + } + + @Test + public void verify_aggregates_values_for_Overall_code_line_and_branch_coverage() { + LinesAndConditionsWithUncoveredMetricKeys metricKeys = new LinesAndConditionsWithUncoveredMetricKeys( + CoreMetrics.OVERALL_LINES_TO_COVER_KEY, CoreMetrics.OVERALL_CONDITIONS_TO_COVER_KEY, + CoreMetrics.OVERALL_UNCOVERED_LINES_KEY, CoreMetrics.OVERALL_UNCOVERED_CONDITIONS_KEY); + String codeCoverageKey = CoreMetrics.OVERALL_COVERAGE_KEY; + String lineCoverageKey = CoreMetrics.OVERALL_LINE_COVERAGE_KEY; + String branchCoverageKey = CoreMetrics.OVERALL_BRANCH_COVERAGE_KEY; + + verify_coverage_aggregates_values(metricKeys, codeCoverageKey, lineCoverageKey, branchCoverageKey); + } + + private void verify_coverage_aggregates_values(LinesAndConditionsWithUncoveredMetricKeys metricKeys, String codeCoverageKey, String lineCoverageKey, String branchCoverageKey) { + measureRepository + .addRawMeasure(PROJECTVIEW_1_REF, metricKeys.getLines(), newMeasureBuilder().create(3000)) + .addRawMeasure(PROJECTVIEW_1_REF, metricKeys.getConditions(), newMeasureBuilder().create(300)) + .addRawMeasure(PROJECTVIEW_1_REF, metricKeys.getUncoveredLines(), newMeasureBuilder().create(30)) + .addRawMeasure(PROJECTVIEW_1_REF, metricKeys.getUncoveredConditions(), newMeasureBuilder().create(9)) + + .addRawMeasure(PROJECTVIEW_2_REF, metricKeys.getLines(), newMeasureBuilder().create(2000)) + .addRawMeasure(PROJECTVIEW_2_REF, metricKeys.getConditions(), newMeasureBuilder().create(400)) + .addRawMeasure(PROJECTVIEW_2_REF, metricKeys.getUncoveredLines(), newMeasureBuilder().create(200)) + .addRawMeasure(PROJECTVIEW_2_REF, metricKeys.getUncoveredConditions(), newMeasureBuilder().create(16)) + + .addRawMeasure(PROJECTVIEW_3_REF, metricKeys.getLines(), newMeasureBuilder().create(1000)) + .addRawMeasure(PROJECTVIEW_3_REF, metricKeys.getConditions(), newMeasureBuilder().create(500)) + .addRawMeasure(PROJECTVIEW_3_REF, metricKeys.getUncoveredLines(), newMeasureBuilder().create(300)) + .addRawMeasure(PROJECTVIEW_3_REF, metricKeys.getUncoveredConditions(), newMeasureBuilder().create(19)); + + underTest.execute(); + + assertThat(toEntries(measureRepository.getAddedRawMeasures(PROJECTVIEW_1_REF))).isEmpty(); + assertThat(toEntries(measureRepository.getAddedRawMeasures(PROJECTVIEW_2_REF))).isEmpty(); + assertThat(toEntries(measureRepository.getAddedRawMeasures(PROJECTVIEW_3_REF))).isEmpty(); + + MeasureRepoEntry[] subViewRepoEntries = { + entryOf(codeCoverageKey, newMeasureBuilder().create(95.5d)), + entryOf(lineCoverageKey, newMeasureBuilder().create(95.4d)), + entryOf(branchCoverageKey, newMeasureBuilder().create(96.4d)) + }; + + assertThat(toEntries(measureRepository.getAddedRawMeasures(SUB_SUBVIEW_REF))).contains(subViewRepoEntries); + assertThat(toEntries(measureRepository.getAddedRawMeasures(SUBVIEW_REF))).contains(subViewRepoEntries); + assertThat(toEntries(measureRepository.getAddedRawMeasures(ROOT_REF))).contains( + entryOf(codeCoverageKey, newMeasureBuilder().create(92d)), + entryOf(lineCoverageKey, newMeasureBuilder().create(91.2d)), + entryOf(branchCoverageKey, newMeasureBuilder().create(96.3d))); + } + +} |