From: <fd...@us...> - 2008-10-29 19:29:39
|
Revision: 4659 http://jnode.svn.sourceforge.net/jnode/?rev=4659&view=rev Author: fduminy Date: 2008-10-29 19:29:31 +0000 (Wed, 29 Oct 2008) Log Message: ----------- - implemented separation of type of evolutions (regressions, progressions, stagnations) - added summary of comparison results at begin of report Modified Paths: -------------- trunk/core/src/test/org/jnode/test/mauve/compare/ComparisonWriter.java trunk/core/src/test/org/jnode/test/mauve/compare/HTMLComparisonWriter.java trunk/core/src/test/org/jnode/test/mauve/compare/TestComparison.java trunk/core/src/test/org/jnode/test/mauve/compare/TextComparisonWriter.java Added Paths: ----------- trunk/core/src/test/org/jnode/test/mauve/compare/EvolutionType.java trunk/core/src/test/org/jnode/test/mauve/compare/EvolutionTypeVisitor.java Modified: trunk/core/src/test/org/jnode/test/mauve/compare/ComparisonWriter.java =================================================================== --- trunk/core/src/test/org/jnode/test/mauve/compare/ComparisonWriter.java 2008-10-28 21:54:38 UTC (rev 4658) +++ trunk/core/src/test/org/jnode/test/mauve/compare/ComparisonWriter.java 2008-10-29 19:29:31 UTC (rev 4659) @@ -45,11 +45,25 @@ final Visitor v = createVisitor(pw); v.writeBegin(); - run.accept(v); + v.writeSummary(run); + + write(run, pw, v, EvolutionType.REGRESSION, "Regressions"); + write(run, pw, v, EvolutionType.PROGRESSION, "Progressions"); + write(run, pw, v, EvolutionType.STAGNATION, "Stagnations"); + v.writeEnd(); pw.flush(); } + + private void write(RunComparison run, PrintWriter pw, Visitor v, EvolutionType type, String typeLabel) { + v.setType(type); + v.setEvolutionLabel(typeLabel); + + v.writeBeginTable(); + run.accept(v); + v.writeEndTable(); + } protected abstract Visitor createVisitor(PrintWriter pw); @@ -65,60 +79,94 @@ return ordinal(); } } - + protected abstract static class Visitor implements ComparisonVisitor { protected final PrintWriter pw; - + protected EvolutionType type; + protected String evolutionLabel; + protected Visitor(PrintWriter pw) { this.pw = pw; } + public void setType(EvolutionType type) { + this.type = type; + } + + public void setEvolutionLabel(String label) { + this.evolutionLabel = label; + } + + abstract protected void writeSummary(int nbRegressions, int nbProgressions, int nbStagnations); + + private void writeSummary(RunComparison run) { + EvolutionTypeVisitor evolTypeVisitor = new EvolutionTypeVisitor(); + run.accept(evolTypeVisitor); + + writeSummary(evolTypeVisitor.getCounter(EvolutionType.REGRESSION), + evolTypeVisitor.getCounter(EvolutionType.PROGRESSION), + evolTypeVisitor.getCounter(EvolutionType.STAGNATION)); + } + public void writeBegin() { } public void writeEnd() { } + public void writeBeginTable() { + } + + public void writeEndTable() { + } + @Override public final void visit(RunComparison run) { - write(Level.RUN, run, true); + if (shouldWrite(run)) { + write(Level.RUN, run, true); + } } @Override public final void visit(PackageComparison pkg) { - write(Level.PACKAGE, pkg, true); + if (shouldWrite(pkg)) { + write(Level.PACKAGE, pkg, true); + } } @Override public final void visit(ClassComparison cls) { - write(Level.CLASS, cls, true); + if (shouldWrite(cls)) { + write(Level.CLASS, cls, true); + } } @Override public final void visit(TestComparison test) { - write(Level.TEST, test, false); - - CheckResult cr = test.getCheckResult(); - String result; - if (cr == null) { - result = "<no checkpoint>"; - } else { - result = Integer.toString(cr.getNumber()) + ':'; + if (shouldWrite(test)) { + write(Level.TEST, test, false); - if (cr.getCheckPoint() == null) { - result += "<no name>"; + CheckResult cr = test.getCheckResult(); + String result; + if (cr == null) { + result = "<no checkpoint>"; } else { - result += cr.getCheckPoint(); + result = Integer.toString(cr.getNumber()) + ':'; + + if (cr.getCheckPoint() == null) { + result += "<no name>"; + } else { + result += cr.getCheckPoint(); + } } + writeCheckResult(result); + + writeEndLine(); } - writeCheckResult(result); - - writeEndLine(); } protected abstract void writeBeginLine(Level level); protected abstract void writeName(Level level, String name); - protected abstract void writeProgression(int progression); protected abstract void writeEndLine(); protected abstract void writeCheckResult(String result); @@ -129,12 +177,17 @@ pw.append(' '); } } - + + private boolean shouldWrite(Comparison<?> comp) { + EvolutionTypeVisitor v = new EvolutionTypeVisitor(); + comp.accept(v); + return (v.getCounter(type) > 0); + } + private void write(Level level, Comparison<?> comp, boolean endLine) { writeBeginLine(level); writeName(level, comp.getName()); - writeProgression(comp.getProgression()); if (endLine) { writeEndLine(); Added: trunk/core/src/test/org/jnode/test/mauve/compare/EvolutionType.java =================================================================== --- trunk/core/src/test/org/jnode/test/mauve/compare/EvolutionType.java (rev 0) +++ trunk/core/src/test/org/jnode/test/mauve/compare/EvolutionType.java 2008-10-29 19:29:31 UTC (rev 4659) @@ -0,0 +1,8 @@ +/** + * + */ +package org.jnode.test.mauve.compare; + +enum EvolutionType { + REGRESSION, PROGRESSION, STAGNATION; +} Added: trunk/core/src/test/org/jnode/test/mauve/compare/EvolutionTypeVisitor.java =================================================================== --- trunk/core/src/test/org/jnode/test/mauve/compare/EvolutionTypeVisitor.java (rev 0) +++ trunk/core/src/test/org/jnode/test/mauve/compare/EvolutionTypeVisitor.java 2008-10-29 19:29:31 UTC (rev 4659) @@ -0,0 +1,31 @@ +package org.jnode.test.mauve.compare; + + +public class EvolutionTypeVisitor implements ComparisonVisitor { + private final int[] counters = new int[EvolutionType.values().length]; + + public int getCounter(EvolutionType type) { + return counters[type.ordinal()]; + } + + @Override + public void visit(RunComparison run) { + // nothing + } + + @Override + public void visit(PackageComparison pkg) { + // nothing + } + + @Override + public void visit(ClassComparison cls) { + // nothing + } + + @Override + public void visit(TestComparison test) { + counters[test.getEvolutionType().ordinal()]++; + } + +} Modified: trunk/core/src/test/org/jnode/test/mauve/compare/HTMLComparisonWriter.java =================================================================== --- trunk/core/src/test/org/jnode/test/mauve/compare/HTMLComparisonWriter.java 2008-10-28 21:54:38 UTC (rev 4658) +++ trunk/core/src/test/org/jnode/test/mauve/compare/HTMLComparisonWriter.java 2008-10-29 19:29:31 UTC (rev 4659) @@ -10,35 +10,55 @@ * */ public class HTMLComparisonWriter extends ComparisonWriter { - private static final String STAGNATION_COLOR = "green"; - private static final String PROGRESSION_COLOR = "cyan"; - private static final String REGRESSION_COLOR = "red"; - @Override protected Visitor createVisitor(PrintWriter pw) { - return new TextVisitor(pw); + return new HTMLVisitor(pw); } - protected static class TextVisitor extends Visitor { - private TextVisitor(PrintWriter pw) { + protected static class HTMLVisitor extends Visitor { + private HTMLVisitor(PrintWriter pw) { super(pw); } + @Override + protected void writeSummary(int nbRegressions, int nbProgressions, int nbStagnations) { + pw.append("<h2>Summary</h2>"); + appendLink(nbRegressions, EvolutionType.REGRESSION, " regressions. "); + appendLink(nbProgressions, EvolutionType.PROGRESSION, " progressions. "); + appendLink(nbStagnations, EvolutionType.STAGNATION, " stagnations. "); + } + + private void appendLink(int value, EvolutionType type, String label) { + pw.append("<a href=\"#").append(type.toString()).append("\">"); + pw.append(Integer.toString(value)).append(label); + pw.append("</a>").append(" ");; + } + public void writeBegin() { pw.append("<html><head></head><body>"); + } + + public void writeEnd() { + pw.append("</body></html>\n"); + } + + public void writeBeginTable() { + pw.append("<br/><h2 id=\"").append(type.toString()).append("\">"); + pw.append(evolutionLabel); + pw.append("</h2><br/>"); + pw.append("<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\"><tr>"); writeCell("th", 0, Level.values().length, "Name"); - writeCell("th", 0, 1, "Progress"); writeCell("th", 0, 1, "Last reached checkpoint"); pw.append("</tr>\n"); } - public void writeEnd() { - pw.append("\n</table></body></html>\n"); + public void writeEndTable() { + pw.append("\n</table>"); } - + @Override protected void writeBeginLine(Level level) { writeIndent(level); @@ -51,20 +71,6 @@ } @Override - protected void writeProgression(int progression) { - final String bgColor; - if (progression == 0) { - bgColor = STAGNATION_COLOR; - } else if (progression < 0) { - bgColor = REGRESSION_COLOR; - } else { - bgColor = PROGRESSION_COLOR; - } - - writeCell("td", 0, 1, Integer.toString(progression), "text-align:right;", bgColor); - } - - @Override protected void writeEndLine() { pw.write("</tr>\n"); } Modified: trunk/core/src/test/org/jnode/test/mauve/compare/TestComparison.java =================================================================== --- trunk/core/src/test/org/jnode/test/mauve/compare/TestComparison.java 2008-10-28 21:54:38 UTC (rev 4658) +++ trunk/core/src/test/org/jnode/test/mauve/compare/TestComparison.java 2008-10-29 19:29:31 UTC (rev 4659) @@ -32,6 +32,16 @@ return progression; } + public EvolutionType getEvolutionType() { + EvolutionType type = EvolutionType.STAGNATION; + if (getProgression() > 0) { + type = EvolutionType.PROGRESSION; + } else if (getProgression() < 0) { + type = EvolutionType.REGRESSION; + } + return type; + } + @Override public void accept(ComparisonVisitor visitor) { visitor.visit(this); Modified: trunk/core/src/test/org/jnode/test/mauve/compare/TextComparisonWriter.java =================================================================== --- trunk/core/src/test/org/jnode/test/mauve/compare/TextComparisonWriter.java 2008-10-28 21:54:38 UTC (rev 4658) +++ trunk/core/src/test/org/jnode/test/mauve/compare/TextComparisonWriter.java 2008-10-29 19:29:31 UTC (rev 4659) @@ -19,6 +19,17 @@ } @Override + protected void writeSummary(int nbRegressions, int nbProgressions, int nbStagnations) { + pw.append(Integer.toString(nbRegressions)).append(" regressions. "); + pw.append(Integer.toString(nbProgressions)).append(" progressions. "); + pw.append(Integer.toString(nbStagnations)).append(" stagnations.\n"); + } + + public void writeBeginTable() { + pw.append("\n").append(evolutionLabel).append("\n"); + } + + @Override protected void writeBeginLine(Level level) { writeIndent(level); } @@ -29,11 +40,6 @@ } @Override - protected void writeProgression(int progression) { - pw.append(Integer.toString(progression)); - } - - @Override protected void writeEndLine() { pw.append('\n'); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |