import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
private File testFile;
private File expectedDir;
private File resultDir;
+ private List<BasicOutput.OutputType> realTypes;
+ private Map<String, List<String>> skipCompare;
public ConversionTest(String[] args) {
super("Conversion", args);
+ // Special mode SYSOUT is not a file type (System.out)
+ realTypes = new ArrayList<BasicOutput.OutputType>();
+ for (BasicOutput.OutputType type : BasicOutput.OutputType.values()) {
+ if (!BasicOutput.OutputType.SYSOUT.equals(type)) {
+ realTypes.add(type);
+ }
+ }
+
addTest(new TestCase("Read the test file") {
@Override
public void test() throws Exception {
}
});
- for (BasicOutput.OutputType type : BasicOutput.OutputType.values()) {
- // NOT for special mode SYSOUT
- if (!BasicOutput.OutputType.SYSOUT.equals(type)) {
- addTest(getTestFor(type));
- }
+ for (BasicOutput.OutputType type : realTypes) {
+ addTest(getTestFor(type));
}
}
resultDir = new File("test/result/");
tempFiles = new TempFiles("Fanfix-ConversionTest");
+
+ skipCompare = new HashMap<String, List<String>>();
+ skipCompare.put("epb.ncx",
+ Arrays.asList(" <meta name=\"dtb:uid\" content="));
+ skipCompare.put("epb.opf", Arrays.asList(" <dc:subject>",
+ " <dc:identifier id=\"BookId\" opf:scheme=\"URI\">"));
+ skipCompare.put(".info",
+ Arrays.asList("CREATION_DATE=", "SUBJECT=", "URL=", "UUID="));
+ skipCompare.put("URL", Arrays.asList("file:/"));
}
@Override
+ type.getDefaultExtension(false));
// Check conversion:
- compareFiles(this, expectedDir, resultDir, type);
+ compareFiles(this, expectedDir, resultDir, type, null);
+
+ // LATEX not supported as input
+ if (BasicOutput.OutputType.LATEX.equals(type)) {
+ return;
+ }
// Cross-checks:
- for (BasicOutput.OutputType type : BasicOutput.OutputType
- .values()) {
- // NOT for special mode SYSOUT
- if (!BasicOutput.OutputType.SYSOUT.equals(type)) {
- File crossDir = tempFiles.createTempDir("cross-result");
- generate(this, target, crossDir, type);
- compareFiles(this, crossDir, resultDir, type);
- }
+ for (BasicOutput.OutputType crossType : realTypes) {
+ File crossDir = tempFiles.createTempDir("cross-result");
+ generate(this, target, crossDir, crossType);
+ compareFiles(this, resultDir, crossDir, crossType,
+ crossType);
}
}
};
}
private void compareFiles(TestCase testCase, File expectedDir,
- File resultDir, final BasicOutput.OutputType typeToCompare)
- throws Exception {
+ File resultDir, final BasicOutput.OutputType typeToCompare,
+ final BasicOutput.OutputType sourceType) throws Exception {
FilenameFilter filter = null;
if (typeToCompare != null) {
expected.isDirectory(), result.isDirectory());
if (expected.isDirectory()) {
- compareFiles(testCase, expected, result, null);
+ compareFiles(testCase, expected, result, null, sourceType);
continue;
}
+ "[zip-content]");
unzip(expected, tmpExpected);
unzip(result, tmpResult);
- compareFiles(testCase, tmpExpected, tmpResult, null);
+ compareFiles(testCase, tmpExpected, tmpResult, null, sourceType);
} else {
List<String> expectedLines = Arrays.asList(IOUtils
.readSmallFile(expected).split("\n"));
for (int j = 0; j < expectedLines.size(); j++) {
String expectedLine = expectedLines.get(j);
String resultLine = resultLines.get(j);
- if (name.endsWith(".info")
- && expectedLine.startsWith("CREATION_DATE=")
- && resultLine.startsWith("CREATION_DATE=")) {
- // TODO: check the format?
+
+ boolean skip = false;
+ for (Entry<String, List<String>> skipThose : skipCompare
+ .entrySet()) {
+ for (String skipStart : skipThose.getValue()) {
+ if (name.endsWith(skipThose.getKey())
+ && expectedLine.startsWith(skipStart)
+ && resultLine.startsWith(skipStart)) {
+ skip = true;
+ }
+ }
+ }
+
+ if (skip) {
continue;
}
- testCase.assertEquals("Line " + (j + 1)
- + " is not the same in file " + name, expectedLine,
- resultLine);
+
+ testCase.assertEquals("Line " + (j + 1) + " (" + sourceType
+ + ") is not the same in file " + name,
+ expectedLine, resultLine);
}
}
}
}
+ // TODO: remove and use IOUtils when updated
private static void unzip(File zipFile, File targetDirectory)
throws IOException {
if (targetDirectory.exists() && targetDirectory.isFile()) {