From dea39ad22777d12aa7dba6c7fde58744bb4b660d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Kautler?= Date: Tue, 27 Aug 2019 00:19:05 +0200 Subject: [PATCH] Do not report 100% if not all mutants were killed --- .../statistics/MutationStatistics.java | 8 +++- .../statistics/MutationStatisticsTest.java | 38 +++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 pitest-entry/src/test/java/org/pitest/mutationtest/statistics/MutationStatisticsTest.java diff --git a/pitest-entry/src/main/java/org/pitest/mutationtest/statistics/MutationStatistics.java b/pitest-entry/src/main/java/org/pitest/mutationtest/statistics/MutationStatistics.java index d359f830d..dced00cf4 100644 --- a/pitest-entry/src/main/java/org/pitest/mutationtest/statistics/MutationStatistics.java +++ b/pitest-entry/src/main/java/org/pitest/mutationtest/statistics/MutationStatistics.java @@ -82,8 +82,12 @@ public long getPercentageDetected() { return 0; } - return Math.round((100f / getTotalMutations()) - * getTotalDetectedMutations()); + if (getTotalMutations() == getTotalDetectedMutations()) { + return 100; + } + + return Math.min(99, Math.round((100f / getTotalMutations()) + * getTotalDetectedMutations())); } public void report(final PrintStream out) { diff --git a/pitest-entry/src/test/java/org/pitest/mutationtest/statistics/MutationStatisticsTest.java b/pitest-entry/src/test/java/org/pitest/mutationtest/statistics/MutationStatisticsTest.java new file mode 100644 index 000000000..0cc124cdf --- /dev/null +++ b/pitest-entry/src/test/java/org/pitest/mutationtest/statistics/MutationStatisticsTest.java @@ -0,0 +1,38 @@ +/* + * Copyright 2011 Henry Coles + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and limitations under the License. + */ +package org.pitest.mutationtest.statistics; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class MutationStatisticsTest { + + @Test + public void shouldNotHaveHundredPercentIfNotAllKilled() { + assertEquals(99, new MutationStatistics(null, 2000, 1999, 1, 1, null).getPercentageDetected()); + } + + @Test + public void shouldHaveHundredPercentIfAllKilled() { + assertEquals(100, new MutationStatistics(null, 2000, 2000, 1, 1, null).getPercentageDetected()); + } + + @Test + public void shouldHaveHundredPercentIfNoMutations() { + assertEquals(100, new MutationStatistics(null, 0, 0, 0, 0, null).getPercentageDetected()); + } + +}