aboutsummaryrefslogtreecommitdiff
path: root/org.jacoco.core/src/org
diff options
context:
space:
mode:
authorMarc R. Hoffmann <hoffmann@mountainminds.com>2013-05-26 05:57:00 -0700
committerMarc R. Hoffmann <hoffmann@mountainminds.com>2013-05-26 05:57:00 -0700
commit65d0700ffc0988767ca4c003b22063e56d2e837f (patch)
tree33261406e5e7904c0b9bf0b52ffdee4edf6e319f /org.jacoco.core/src/org
parentccbbc428f5bad06f43ae6c42f9691a1c9f5a2f73 (diff)
parent88e08e1f0bfff8f846be64fa9c8ff593163ef05c (diff)
downloadjacoco-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')
-rw-r--r--org.jacoco.core/src/org/jacoco/core/analysis/CounterComparator.java77
-rw-r--r--org.jacoco.core/src/org/jacoco/core/analysis/ICounter.java30
-rw-r--r--org.jacoco.core/src/org/jacoco/core/internal/analysis/CounterImpl.java17
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;
}