1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
// Copyright (c) 2008 Fabien DUMINY (fduminy@jnode.org)
// This file is part of Mauve.
// Mauve is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2, or (at your option)
// any later version.
// Mauve 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 General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Mauve; see the file COPYING. If not, write to
// the Free Software Foundation, 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA. */
package gnu.testlet.runner.compare;
import gnu.testlet.runner.Result;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
/**
* Abstract class for the result of the comparison of 2 {@link Result}s
*
* @author fabien
*
*/
public abstract class Comparison implements Comparable {
private final String name;
private final Set children = new TreeSet();
Comparison(Result result) {
this.name = result.getName();
}
public final String getName() {
return name;
}
public final Comparison get(String name) {
Comparison result = null;
for (Iterator it = children.iterator(); it.hasNext(); ) {
Comparison r = (Comparison) it.next();
if (r.getName().equals(name)) {
result = r;
break;
}
}
return result;
}
public abstract void accept(ComparisonVisitor visitor);
public int getProgression() {
int progression = 0;
for (Iterator it = children.iterator(); it.hasNext(); ) {
Comparison r = (Comparison) it.next();
progression += r.getProgression();
}
return progression;
}
public final void add(Comparison child) {
children.add(child);
}
/**
* @param comparison an instance of Comparison
*/
public final int compareTo(Object comparison) {
Comparison c = (Comparison) comparison;
// regressions have negative progression
// we sort from bigger regression to bigger progression
int result = getProgression() - c.getProgression();
if (result == 0) {
result = getName().compareTo(c.getName());
}
return result;
}
protected final void acceptChildren(ComparisonVisitor visitor) {
for (Iterator it = children.iterator(); it.hasNext(); ) {
Comparison cmp = (Comparison) it.next();
cmp.accept(visitor);
}
}
}
|