|
7 | 7 |
|
8 | 8 | package org.jd.core.v1; |
9 | 9 |
|
10 | | -import junit.framework.TestCase; |
11 | 10 | import org.jd.core.v1.api.loader.Loader; |
12 | | -import org.jd.core.v1.api.printer.Printer; |
13 | 11 | import org.jd.core.v1.compiler.CompilerUtil; |
14 | 12 | import org.jd.core.v1.compiler.JavaSourceFileObject; |
15 | 13 | import org.jd.core.v1.loader.ZipLoader; |
16 | | -import org.jd.core.v1.model.classfile.ClassFile; |
17 | | -import org.jd.core.v1.model.message.DecompileContext; |
18 | 14 | import org.jd.core.v1.printer.PlainTextPrinter; |
19 | 15 | import org.jd.core.v1.regex.PatternMaker; |
20 | | -import org.jd.core.v1.service.converter.classfiletojavasyntax.ClassFileToJavaSyntaxProcessor; |
21 | | -import org.jd.core.v1.service.deserializer.classfile.ClassFileDeserializer; |
22 | | -import org.jd.core.v1.service.fragmenter.javasyntaxtojavafragment.JavaSyntaxToJavaFragmentProcessor; |
23 | | -import org.jd.core.v1.service.layouter.LayoutFragmentProcessor; |
24 | | -import org.jd.core.v1.service.tokenizer.javafragmenttotoken.JavaFragmentToTokenProcessor; |
25 | | -import org.jd.core.v1.service.writer.WriteTokenProcessor; |
26 | 16 | import org.junit.Test; |
27 | 17 |
|
28 | 18 | import java.io.InputStream; |
29 | 19 | import java.util.Collections; |
30 | 20 | import java.util.Map; |
31 | 21 |
|
32 | | -public class JavaInnerOuterClassTest extends TestCase { |
33 | | - protected ClassFileDeserializer deserializer = new ClassFileDeserializer(); |
34 | | - protected ClassFileToJavaSyntaxProcessor converter = new ClassFileToJavaSyntaxProcessor(); |
35 | | - protected JavaSyntaxToJavaFragmentProcessor fragmenter = new JavaSyntaxToJavaFragmentProcessor(); |
36 | | - protected LayoutFragmentProcessor layouter = new LayoutFragmentProcessor(); |
37 | | - //protected TestTokenizeJavaFragmentProcessor tokenizer = new TestTokenizeJavaFragmentProcessor(); |
38 | | - protected JavaFragmentToTokenProcessor tokenizer = new JavaFragmentToTokenProcessor(); |
39 | | - protected WriteTokenProcessor writer = new WriteTokenProcessor(); |
| 22 | +public class JavaInnerOuterClassTest extends AbstractJdTest { |
40 | 23 |
|
41 | 24 | @Test |
42 | 25 | public void testJdk170InnerOuterClass() throws Exception { |
43 | 26 | String internalClassName = "org/jd/core/test/OuterClass"; |
44 | 27 | InputStream is = this.getClass().getResourceAsStream("/zip/data-java-jdk-1.7.0.zip"); |
45 | 28 | Loader loader = new ZipLoader(is); |
46 | 29 | Map<String, Object> configuration = Collections.singletonMap("realignLineNumbers", Boolean.TRUE); |
47 | | - String source = decompile(loader, new PlainTextPrinter(), internalClassName, configuration); |
| 30 | + String source = decompileSuccess(loader, new PlainTextPrinter(), internalClassName, configuration); |
48 | 31 |
|
49 | 32 | // Check decompiled source code |
50 | 33 | assertTrue(source.matches(PatternMaker.make(": 10 */", "protected int outerField1 = 0;"))); |
@@ -102,39 +85,4 @@ public void testJdk170InnerOuterClass() throws Exception { |
102 | 85 | // Recompile decompiled source code and check errors |
103 | 86 | assertTrue(CompilerUtil.compile("1.7", new JavaSourceFileObject(internalClassName, source))); |
104 | 87 | } |
105 | | - |
106 | | - protected String decompile(Loader loader, Printer printer, String internalTypeName) throws Exception { |
107 | | - return decompile(loader, printer, internalTypeName, Collections.emptyMap()); |
108 | | - } |
109 | | - |
110 | | - protected String decompile(Loader loader, Printer printer, String internalTypeName, Map<String, Object> configuration) throws Exception { |
111 | | - DecompileContext decompileContext = new DecompileContext(); |
112 | | - decompileContext.setLoader(loader); |
113 | | - decompileContext.setPrinter(printer); |
114 | | - decompileContext.setMainInternalTypeName(internalTypeName); |
115 | | - decompileContext.setConfiguration(configuration); |
116 | | - |
117 | | - ClassFile classFile = deserializer.loadClassFile(loader, internalTypeName); |
118 | | - decompileContext.setBody(classFile); |
119 | | - |
120 | | - converter.process(decompileContext); |
121 | | - fragmenter.process(decompileContext); |
122 | | - layouter.process(decompileContext); |
123 | | - tokenizer.process(decompileContext); |
124 | | - writer.process(decompileContext); |
125 | | - |
126 | | - String source = printer.toString(); |
127 | | - |
128 | | - printSource(source); |
129 | | - |
130 | | - assertTrue(source.indexOf("// Byte code:") == -1); |
131 | | - |
132 | | - return source; |
133 | | - } |
134 | | - |
135 | | - protected void printSource(String source) { |
136 | | - System.out.println("- - - - - - - - "); |
137 | | - System.out.println(source); |
138 | | - System.out.println("- - - - - - - - "); |
139 | | - } |
140 | 88 | } |
0 commit comments