[java-decompiler] common file comparison method extracted; test data updated

This commit is contained in:
Roman Shevchenko
2015-09-07 19:23:12 +03:00
parent 9a06c52a8f
commit aab87019ef
6 changed files with 82 additions and 48 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* Copyright 2000-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,7 +16,6 @@
package org.jetbrains.java.decompiler;
import org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler;
import org.jetbrains.java.decompiler.util.InterpreterUtil;
import org.junit.After;
import org.junit.Before;
@@ -28,7 +27,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import static org.junit.Assert.assertEquals;
import static org.jetbrains.java.decompiler.DecompilerTestFixture.assertFilesEqual;
import static org.junit.Assert.assertTrue;
public abstract class SingleClassesTestBase {
@@ -51,25 +50,20 @@ public abstract class SingleClassesTestBase {
}
protected void doTest(String testFile) {
try {
File classFile = new File(fixture.getTestDataDir(), "/classes/" + testFile + ".class");
assertTrue(classFile.isFile());
String testName = classFile.getName().substring(0, classFile.getName().length() - 6);
File classFile = new File(fixture.getTestDataDir(), "/classes/" + testFile + ".class");
assertTrue(classFile.isFile());
String testName = classFile.getName().substring(0, classFile.getName().length() - 6);
ConsoleDecompiler decompiler = fixture.getDecompiler();
ConsoleDecompiler decompiler = fixture.getDecompiler();
for (File file : collectClasses(classFile)) decompiler.addSpace(file, true);
decompiler.decompileContext();
for (File file : collectClasses(classFile)) decompiler.addSpace(file, true);
decompiler.decompileContext();
File decompiledFile = new File(fixture.getTargetDir(), testName + ".java");
assertTrue(decompiledFile.isFile());
File referenceFile = new File(fixture.getTestDataDir(), "results/" + testName + ".dec");
assertTrue(referenceFile.isFile());
compareContent(decompiledFile, referenceFile);
}
catch (Exception e) {
throw new RuntimeException(e);
}
File decompiledFile = new File(fixture.getTargetDir(), testName + ".java");
assertTrue(decompiledFile.isFile());
File referenceFile = new File(fixture.getTestDataDir(), "results/" + testName + ".dec");
assertTrue(referenceFile.isFile());
assertFilesEqual(referenceFile, decompiledFile);
}
private static List<File> collectClasses(File classFile) {
@@ -90,15 +84,4 @@ public abstract class SingleClassesTestBase {
return files;
}
private static void compareContent(File decompiledFile, File referenceFile) throws IOException {
String decompiledContent = new String(InterpreterUtil.getBytes(decompiledFile), "UTF-8");
String referenceContent = new String(InterpreterUtil.getBytes(referenceFile), "UTF-8");
if (InterpreterUtil.IS_WINDOWS && !referenceContent.contains("\r\n")) {
referenceContent = referenceContent.replace("\n", "\r\n"); // fix for broken Git checkout on Windows
}
assertEquals(referenceContent, decompiledContent);
}
}