diff options
author | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2013-05-26 05:57:00 -0700 |
---|---|---|
committer | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2013-05-26 05:57:00 -0700 |
commit | 65d0700ffc0988767ca4c003b22063e56d2e837f (patch) | |
tree | 33261406e5e7904c0b9bf0b52ffdee4edf6e319f /org.jacoco.core/src/org | |
parent | ccbbc428f5bad06f43ae6c42f9691a1c9f5a2f73 (diff) | |
parent | 88e08e1f0bfff8f846be64fa9c8ff593163ef05c (diff) | |
download | jacoco-65d0700ffc0988767ca4c003b22063e56d2e837f.tar.gz |
Merge pull request #106 from jacoco/issue-106
Coverage check redesign incl. Ant support.
Diffstat (limited to 'org.jacoco.core/src/org')
3 files changed, 75 insertions, 49 deletions
diff --git a/org.jacoco.core/src/org/jacoco/core/analysis/CounterComparator.java b/org.jacoco.core/src/org/jacoco/core/analysis/CounterComparator.java index 56420b07..03764314 100644 --- a/org.jacoco.core/src/org/jacoco/core/analysis/CounterComparator.java +++ b/org.jacoco.core/src/org/jacoco/core/analysis/CounterComparator.java @@ -14,76 +14,63 @@ package org.jacoco.core.analysis; import java.io.Serializable; import java.util.Comparator; +import org.jacoco.core.analysis.ICounter.CounterValue; import org.jacoco.core.analysis.ICoverageNode.CounterEntity; /** * Collection of comparators to compare {@link ICounter} objects by different * criteria. */ -public abstract class CounterComparator implements Comparator<ICounter>, - Serializable { +public class CounterComparator implements Comparator<ICounter>, Serializable { private static final long serialVersionUID = -3777463066252746748L; /** * Compares the absolute number of total items. */ - public static final CounterComparator TOTALITEMS = new CounterComparator() { - - private static final long serialVersionUID = 8824120489765405662L; - - public int compare(final ICounter c1, final ICounter c2) { - return c1.getTotalCount() - c2.getTotalCount(); - } - }; + public static final CounterComparator TOTALITEMS = new CounterComparator( + CounterValue.TOTALCOUNT); /** * Compares the absolute number of covered items. */ - public static final CounterComparator COVEREDITEMS = new CounterComparator() { - - private static final long serialVersionUID = 1L; - - public int compare(final ICounter c1, final ICounter c2) { - return c1.getCoveredCount() - c2.getCoveredCount(); - } - }; + public static final CounterComparator COVEREDITEMS = new CounterComparator( + CounterValue.COVEREDCOUNT); /** * Compares the absolute number of missed items. */ - public static final CounterComparator MISSEDITEMS = new CounterComparator() { - - private static final long serialVersionUID = -2991039557556551206L; - - public int compare(final ICounter c1, final ICounter c2) { - return c1.getMissedCount() - c2.getMissedCount(); - } - }; + public static final CounterComparator MISSEDITEMS = new CounterComparator( + CounterValue.MISSEDCOUNT); /** * Compares the ratio of covered items. */ - public static final CounterComparator COVEREDRATIO = new CounterComparator() { - - private static final long serialVersionUID = 7897690710299613918L; - - public int compare(final ICounter c1, final ICounter c2) { - return Double.compare(c1.getCoveredRatio(), c2.getCoveredRatio()); - } - }; + public static final CounterComparator COVEREDRATIO = new CounterComparator( + CounterValue.COVEREDRATIO); /** * Compares the ratio of missed items. */ - public static final CounterComparator MISSEDRATIO = new CounterComparator() { + public static final CounterComparator MISSEDRATIO = new CounterComparator( + CounterValue.MISSEDRATIO); - private static final long serialVersionUID = -5014193668057469357L; + private final CounterValue value; + private final boolean reverse; - public int compare(final ICounter c1, final ICounter c2) { - return Double.compare(c1.getMissedRatio(), c2.getMissedRatio()); - } - }; + private CounterComparator(final CounterValue value) { + this(value, false); + } + + private CounterComparator(final CounterValue value, final boolean reverse) { + this.value = value; + this.reverse = reverse; + } + + public int compare(final ICounter c1, final ICounter c2) { + final int cmp = Double.compare(c1.getValue(value), c2.getValue(value)); + return reverse ? -cmp : cmp; + } /** * Creates a new version of this comparator that sorts in reverse order. @@ -91,15 +78,7 @@ public abstract class CounterComparator implements Comparator<ICounter>, * @return reverse comparator */ public CounterComparator reverse() { - final CounterComparator original = this; - return new CounterComparator() { - - private static final long serialVersionUID = 7703349549732801967L; - - public int compare(final ICounter o1, final ICounter o2) { - return original.compare(o2, o1); - } - }; + return new CounterComparator(value, !reverse); } /** diff --git a/org.jacoco.core/src/org/jacoco/core/analysis/ICounter.java b/org.jacoco.core/src/org/jacoco/core/analysis/ICounter.java index 9d2dbabc..6806789a 100644 --- a/org.jacoco.core/src/org/jacoco/core/analysis/ICounter.java +++ b/org.jacoco.core/src/org/jacoco/core/analysis/ICounter.java @@ -18,6 +18,27 @@ package org.jacoco.core.analysis; public interface ICounter { /** + * Different values provided by a counter. + */ + public enum CounterValue { + + /** Total number of items */ + TOTALCOUNT, + + /** Number of missed items */ + MISSEDCOUNT, + + /** Number of covered items */ + COVEREDCOUNT, + + /** Ratio of missed to total items */ + MISSEDRATIO, + + /** Ratio of covered to total items */ + COVEREDRATIO + } + + /** * Status flag for no items (value is 0x00). */ public static final int EMPTY = 0x00; @@ -38,6 +59,15 @@ public interface ICounter { public static final int PARTLY_COVERED = NOT_COVERED | FULLY_COVERED; /** + * Returns the counter value of the given type. + * + * @param value + * value type to return + * @return counter value + */ + public double getValue(CounterValue value); + + /** * Returns the total count of items. * * @return total count of items diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/CounterImpl.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/CounterImpl.java index c5cc1901..8fdd0c7b 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/CounterImpl.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/CounterImpl.java @@ -147,6 +147,23 @@ public abstract class CounterImpl implements ICounter { // === ICounter implementation === + public double getValue(final CounterValue value) { + switch (value) { + case TOTALCOUNT: + return getTotalCount(); + case MISSEDCOUNT: + return getMissedCount(); + case COVEREDCOUNT: + return getCoveredCount(); + case MISSEDRATIO: + return getMissedRatio(); + case COVEREDRATIO: + return getCoveredRatio(); + default: + throw new AssertionError(value); + } + } + public int getTotalCount() { return missed + covered; } |