From d69f26fbaceaf7aa48bcc8f7ec90772ab68e393a Mon Sep 17 00:00:00 2001 From: Glen Mazza Date: Sun, 30 Jan 2005 21:59:29 +0000 Subject: [PATCH] PR: Obtained from: Submitted by: Reviewed by: Altered TestConverter to use FileCompare's file comparison logic. Renamed Compare to FileCompare. Simplified logger implementation in TestConverter. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198343 13f79535-47bb-0310-9956-ffa450edef68 --- examples/fo/build.xml | 2 +- .../org/apache/fop/tools/TestConverter.java | 58 ++++------------ .../{Compare.java => FileCompare.java} | 69 ++++++++++--------- .../apache/fop/tools/anttasks/RunTest.java | 8 ++- 4 files changed, 55 insertions(+), 82 deletions(-) rename src/java/org/apache/fop/tools/anttasks/{Compare.java => FileCompare.java} (83%) diff --git a/examples/fo/build.xml b/examples/fo/build.xml index 5e8c092ee..841c76b68 100644 --- a/examples/fo/build.xml +++ b/examples/fo/build.xml @@ -17,7 +17,7 @@ - + diff --git a/src/java/org/apache/fop/tools/TestConverter.java b/src/java/org/apache/fop/tools/TestConverter.java index a0a6d7406..0fd0831b7 100644 --- a/src/java/org/apache/fop/tools/TestConverter.java +++ b/src/java/org/apache/fop/tools/TestConverter.java @@ -29,11 +29,11 @@ import javax.xml.parsers.DocumentBuilderFactory; import org.apache.fop.apps.Fop; import org.apache.fop.apps.FOUserAgent; import org.apache.fop.apps.InputHandler; +import org.apache.fop.tools.anttasks.FileCompare; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import org.apache.commons.logging.Log; import org.apache.commons.logging.impl.SimpleLog; @@ -60,24 +60,7 @@ public class TestConverter { /** * logging instance */ - protected Log logger = null; - - - /** - * Sets the Commons-Logging instance for this class - * @param logger The Commons-Logging instance - */ - public void setLogger(Log logger) { - this.logger = logger; - } - - /** - * Returns the Commons-Logging instance for this class - * @return The Commons-Logging instance - */ - protected Log getLogger() { - return logger; - } + protected SimpleLog logger = null; /** * This main method can be used to run the test converter from @@ -128,9 +111,8 @@ public class TestConverter { * Construct a new TestConverter */ public TestConverter() { - SimpleLog log = new SimpleLog("FOP/Test"); - log.setLevel(SimpleLog.LOG_LEVEL_ERROR); - setLogger(log); + logger = new SimpleLog("FOP/Test"); + logger.setLevel(SimpleLog.LOG_LEVEL_ERROR); } /** @@ -159,14 +141,14 @@ public class TestConverter { } /** - * Controls whether to generate PDF or XML. - * @param pdf If True, PDF is generated, Area Tree XML otherwise. + * Controls whether to set logging to debug level + * @param If true, debug level, if false, error level */ public void setDebug(boolean debug) { if (debug) { - SimpleLog log = new SimpleLog("FOP/Test"); - log.setLevel(SimpleLog.LOG_LEVEL_DEBUG); - setLogger(log); + logger.setLevel(SimpleLog.LOG_LEVEL_DEBUG); + } else { + logger.setLevel(SimpleLog.LOG_LEVEL_ERROR); } } @@ -338,7 +320,7 @@ public class TestConverter { } } } catch (Exception e) { - getLogger().error("Error while running tests", e); + logger.error("Error while running tests", e); } } @@ -364,28 +346,12 @@ public class TestConverter { * @return true if equal */ protected boolean compareFiles(File f1, File f2) { - if (f1.length() != f2.length()) { - return false; - } try { - InputStream is1 = new java.io.BufferedInputStream(new java.io.FileInputStream(f1)); - InputStream is2 = new java.io.BufferedInputStream(new java.io.FileInputStream(f2)); - while (true) { - int ch1 = is1.read(); - int ch2 = is2.read(); - if (ch1 == ch2) { - if (ch1 == -1) { - return true; - } - } else { - return false; - } - } + return FileCompare.compareFiles(f1, f2); } catch (Exception e) { logger.error("Error while comparing files", e); + return false; } - - return false; } private Node locateResult(Node testcase, String id) { diff --git a/src/java/org/apache/fop/tools/anttasks/Compare.java b/src/java/org/apache/fop/tools/anttasks/FileCompare.java similarity index 83% rename from src/java/org/apache/fop/tools/anttasks/Compare.java rename to src/java/org/apache/fop/tools/anttasks/FileCompare.java index e3f81d202..175cb6f0a 100644 --- a/src/java/org/apache/fop/tools/anttasks/Compare.java +++ b/src/java/org/apache/fop/tools/anttasks/FileCompare.java @@ -35,16 +35,11 @@ import java.text.DateFormat; * It provides methods to compare two files. */ -public class Compare { +public class FileCompare { - private static final boolean IDENTICAL_FILES = true; - private static final boolean NOTIDENTICAL_FILES = false; - private String referenceDirectory, testDirectory; private String[] filenameList; private String filenames; - private BufferedInputStream oldfileInput; - private BufferedInputStream newfileInput; /** * Sets directory for test files. @@ -83,36 +78,48 @@ public class Compare { filenameList = (String[])filenameListTmp.toArray(new String[0]); } - private boolean compareBytes(File oldFile, File newFile) { - try { - oldfileInput = - new BufferedInputStream(new java.io.FileInputStream(oldFile)); - newfileInput = - new BufferedInputStream(new java.io.FileInputStream(newFile)); - int charactO = 0; - int charactN = 0; - boolean identical = true; - - while (identical & (charactO != -1)) { - if (charactO == charactN) { - charactO = oldfileInput.read(); - charactN = newfileInput.read(); - } else { - return NOTIDENTICAL_FILES; - } + /** + * Compares two files to see if they are equal + * @param true if files are same, false otherwise + */ + public static boolean compareFiles(File f1, File f2) throws IOException { + return (compareFileSize(f1, f2) && compareBytes(f1, f2)); + } + + /** + * Does a byte compare of two files + * @param true if files are same byte-by-byte, false otherwise + */ + private static boolean compareBytes(File file1, File file2) throws IOException { + BufferedInputStream file1Input = + new BufferedInputStream(new java.io.FileInputStream(file1)); + BufferedInputStream file2Input = + new BufferedInputStream(new java.io.FileInputStream(file2)); + + int charact1 = 0; + int charact2 = 0; + + while (charact1 != -1) { + if (charact1 == charact2) { + charact1 = file1Input.read(); + charact2 = file2Input.read(); + } else { + return false; } - return IDENTICAL_FILES; - } catch (IOException io) { - System.err.println("Task Compare - Error: \n" + io.toString()); } - return NOTIDENTICAL_FILES; + + return true; } - private boolean compareFileSize(File oldFile, File newFile) { + /** + * Does a file size compare of two files + * @param true if files are same length, false otherwise + */ + private static boolean compareFileSize(File oldFile, File newFile) { if (oldFile.length() != newFile.length()) { - return NOTIDENTICAL_FILES; + return false; } else { - return IDENTICAL_FILES; + return true; } } // end: compareBytes @@ -142,8 +149,6 @@ public class Compare { + "reference file" + "test file" + "identical?"); - - } /** diff --git a/src/java/org/apache/fop/tools/anttasks/RunTest.java b/src/java/org/apache/fop/tools/anttasks/RunTest.java index 396a2d539..b13619563 100644 --- a/src/java/org/apache/fop/tools/anttasks/RunTest.java +++ b/src/java/org/apache/fop/tools/anttasks/RunTest.java @@ -37,8 +37,8 @@ import java.util.Map; /** * Testing ant task. * This task is used to test FOP as a build target. - * This uses the TestConverter (with weak code dependancy) to run the tests - * and check the results. + * This uses the TestConverter (with weak code dependency) + * to run the tests and check the results. */ public class RunTest extends Task { @@ -144,7 +144,7 @@ public class RunTest extends Task { boolean failed = false; try { - Class cla = Class.forName("org.apache.fop.apps.Version", true, + Class cla = Class.forName("org.apache.fop.apps.Fop", true, loader); Method get = cla.getMethod("getVersion", new Class[]{}); if (!get.invoke(null, new Object[]{}).equals(refVersion)) { @@ -180,6 +180,8 @@ public class RunTest extends Task { * This loads the TestConverter using the class loader and * then runs the test suite for the current test suite * file in the base directory. + * (Note class loader option provided to allow for different + * fop.jar and other libraries to be activated.) * @param loader the class loader to use to run the tests with * @param dest destination directory * @param compDir comparison directory -- 2.39.5