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 e2cb02bd5..ef3ffb2a0 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 @@ -58,8 +58,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..aa11553e9 --- /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).getPercentageDetected()); + } + + @Test + public void shouldHaveHundredPercentIfAllKilled() { + assertEquals(100, new MutationStatistics(null, 2000, 2000, 1).getPercentageDetected()); + } + + @Test + public void shouldHaveHundredPercentIfNoMutations() { + assertEquals(100, new MutationStatistics(null, 0, 0, 0).getPercentageDetected()); + } + +}