diff --git a/test/org/jetbrains/java/decompiler/SingleClassesTest.java b/test/org/jetbrains/java/decompiler/SingleClassesTest.java index f0de32d..efa548e 100644 --- a/test/org/jetbrains/java/decompiler/SingleClassesTest.java +++ b/test/org/jetbrains/java/decompiler/SingleClassesTest.java @@ -15,6 +15,9 @@ */ package org.jetbrains.java.decompiler; +import java.util.HashMap; + +import org.jetbrains.java.decompiler.main.extern.IFernflowerPreferences; import org.junit.Test; public class SingleClassesTest extends SingleClassesTestBase { @@ -36,4 +39,10 @@ public class SingleClassesTest extends SingleClassesTestBase { @Test public void testInvalidMethodSignature() { doTest("InvalidMethodSignature"); } @Test public void testInnerClassConstructor() { doTest("pkg/TestInnerClassConstructor"); } @Test public void testInnerClassConstructor11() { doTest("v11/TestInnerClassConstructor"); } + @Test + public void testSimpleBytecodeMapping() { + doTest("pkg/TestClassSimpleBytecodeMapping", new HashMap(){{ + put(IFernflowerPreferences.BYTECODE_SOURCE_MAPPING, "1");}}); + } + } diff --git a/test/org/jetbrains/java/decompiler/SingleClassesTestBase.java b/test/org/jetbrains/java/decompiler/SingleClassesTestBase.java index 985fc95..be402da 100644 --- a/test/org/jetbrains/java/decompiler/SingleClassesTestBase.java +++ b/test/org/jetbrains/java/decompiler/SingleClassesTestBase.java @@ -15,21 +15,24 @@ */ 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; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import org.jetbrains.java.decompiler.main.DecompilerContext; +import org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler; +import org.jetbrains.java.decompiler.util.InterpreterUtil; +import org.junit.After; +import org.junit.Before; public abstract class SingleClassesTestBase { private DecompilerTestFixture fixture; @@ -51,12 +54,24 @@ public abstract class SingleClassesTestBase { } protected void doTest(String testFile) { + doTest(testFile, null); + } + + protected void doTest(String testFile, Map options) { + try { 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(); + if(options != null) { + for(Entry option : options.entrySet()) { + // overwrite with user-supplied value + DecompilerContext.setProperty(option.getKey(), option.getValue()); + } + } + for (File file : collectClasses(classFile)) decompiler.addSpace(file, true); decompiler.decompileContext(); diff --git a/testData/results/TestClassSimpleBytecodeMapping.dec b/testData/results/TestClassSimpleBytecodeMapping.dec index ad02e64..51adb53 100644 --- a/testData/results/TestClassSimpleBytecodeMapping.dec +++ b/testData/results/TestClassSimpleBytecodeMapping.dec @@ -13,7 +13,7 @@ public class TestClassSimpleBytecodeMapping { } } -class test/TestClassSimpleBytecodeMapping{ +class pkg/TestClassSimpleBytecodeMapping{ method test ()I{ 0 4 3 4