Skip to content

Commit 615196e

Browse files
committed
refactor: create AbstrctJdTest to make test easy
1 parent 3393c2b commit 615196e

File tree

6 files changed

+78
-280
lines changed

6 files changed

+78
-280
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package org.jd.core.v1;
2+
3+
import junit.framework.TestCase;
4+
import org.jd.core.v1.api.loader.Loader;
5+
import org.jd.core.v1.api.printer.Printer;
6+
import org.jd.core.v1.model.classfile.ClassFile;
7+
import org.jd.core.v1.model.message.DecompileContext;
8+
import org.jd.core.v1.service.converter.classfiletojavasyntax.ClassFileToJavaSyntaxProcessor;
9+
import org.jd.core.v1.service.deserializer.classfile.ClassFileDeserializer;
10+
import org.jd.core.v1.service.fragmenter.javasyntaxtojavafragment.JavaSyntaxToJavaFragmentProcessor;
11+
import org.jd.core.v1.service.layouter.LayoutFragmentProcessor;
12+
import org.jd.core.v1.service.tokenizer.javafragmenttotoken.JavaFragmentToTokenProcessor;
13+
import org.jd.core.v1.service.writer.WriteTokenProcessor;
14+
15+
import java.util.Collections;
16+
import java.util.Map;
17+
18+
public abstract class AbstractJdTest extends TestCase {
19+
protected ClassFileDeserializer deserializer = new ClassFileDeserializer();
20+
protected ClassFileToJavaSyntaxProcessor converter = new ClassFileToJavaSyntaxProcessor();
21+
protected JavaSyntaxToJavaFragmentProcessor fragmenter = new JavaSyntaxToJavaFragmentProcessor();
22+
protected LayoutFragmentProcessor layouter = new LayoutFragmentProcessor();
23+
protected JavaFragmentToTokenProcessor tokenizer = new JavaFragmentToTokenProcessor();
24+
protected WriteTokenProcessor writer = new WriteTokenProcessor();
25+
26+
protected String decompile(Loader loader, Printer printer, String internalTypeName, Map<String, Object> configuration) throws Exception {
27+
DecompileContext decompileContext = new DecompileContext();
28+
decompileContext.setLoader(loader);
29+
decompileContext.setPrinter(printer);
30+
decompileContext.setMainInternalTypeName(internalTypeName);
31+
decompileContext.setConfiguration(configuration);
32+
33+
ClassFile classFile = deserializer.loadClassFile(loader, internalTypeName);
34+
decompileContext.setBody(classFile);
35+
36+
converter.process(decompileContext);
37+
fragmenter.process(decompileContext);
38+
layouter.process(decompileContext);
39+
tokenizer.process(decompileContext);
40+
writer.process(decompileContext);
41+
42+
String source = printer.toString();
43+
44+
printSource(source);
45+
46+
return source;
47+
}
48+
49+
protected String decompile(Loader loader, Printer printer, String internalTypeName) throws Exception {
50+
return decompile(loader, printer, internalTypeName, Collections.emptyMap());
51+
}
52+
53+
protected String decompileSuccess(Loader loader, Printer printer, String internalTypeName) throws Exception {
54+
String source = decompile(loader, printer, internalTypeName, Collections.emptyMap());
55+
assertTrue(source.indexOf("// Byte code:") == -1);
56+
return source;
57+
}
58+
59+
protected void printSource(String source) {
60+
System.out.println("- - - - - - - - ");
61+
System.out.println(source);
62+
System.out.println("- - - - - - - - ");
63+
}
64+
}

src/test/java/org/jd/core/v1/CfrTest.java

Lines changed: 3 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -7,42 +7,24 @@
77

88
package org.jd.core.v1;
99

10-
import junit.framework.TestCase;
11-
import org.jd.core.v1.api.loader.Loader;
12-
import org.jd.core.v1.api.printer.Printer;
1310
import org.jd.core.v1.compiler.CompilerUtil;
1411
import org.jd.core.v1.compiler.JavaSourceFileObject;
1512
import org.jd.core.v1.loader.ClassPathLoader;
16-
import org.jd.core.v1.model.classfile.ClassFile;
17-
import org.jd.core.v1.model.message.DecompileContext;
1813
import org.jd.core.v1.printer.PlainTextPrinter;
1914
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;
2615
import org.jd.core.v1.stub.FloatingPointCasting;
2716
import org.junit.Test;
2817

2918
import java.util.Collections;
30-
import java.util.Map;
3119

32-
public class CfrTest 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();
20+
public class CfrTest extends AbstractJdTest {
4021

4122
@Test
4223
// https://github.com/java-decompiler/jd-core/issues/34
4324
public void testFloatingPointCasting() throws Exception {
4425
String internalClassName = FloatingPointCasting.class.getName().replace('.', '/');
45-
String source = decompile(new ClassPathLoader(), new PlainTextPrinter(), internalClassName);
26+
String source = decompile(new ClassPathLoader(), new PlainTextPrinter(), internalClassName, Collections.emptyMap());
27+
assertTrue(source.indexOf("// Byte code:") == -1);
4628

4729
// Check decompiled source code
4830
assertTrue(source.matches(PatternMaker.make(": 12 */", "long b = (long)(double)")));
@@ -52,39 +34,4 @@ public void testFloatingPointCasting() throws Exception {
5234
// Recompile decompiled source code and check errors
5335
assertTrue(CompilerUtil.compile("1.8", new JavaSourceFileObject(internalClassName, source)));
5436
}
55-
56-
protected String decompile(Loader loader, Printer printer, String internalTypeName) throws Exception {
57-
return decompile(loader, printer, internalTypeName, Collections.emptyMap());
58-
}
59-
60-
protected String decompile(Loader loader, Printer printer, String internalTypeName, Map<String, Object> configuration) throws Exception {
61-
DecompileContext decompileContext = new DecompileContext();
62-
decompileContext.setLoader(loader);
63-
decompileContext.setPrinter(printer);
64-
decompileContext.setMainInternalTypeName(internalTypeName);
65-
decompileContext.setConfiguration(configuration);
66-
67-
ClassFile classFile = deserializer.loadClassFile(loader, internalTypeName);
68-
decompileContext.setBody(classFile);
69-
70-
converter.process(decompileContext);
71-
fragmenter.process(decompileContext);
72-
layouter.process(decompileContext);
73-
tokenizer.process(decompileContext);
74-
writer.process(decompileContext);
75-
76-
String source = printer.toString();
77-
78-
printSource(source);
79-
80-
assertTrue(source.indexOf("// Byte code:") == -1);
81-
82-
return source;
83-
}
84-
85-
protected void printSource(String source) {
86-
System.out.println("- - - - - - - - ");
87-
System.out.println(source);
88-
System.out.println("- - - - - - - - ");
89-
}
9037
}

src/test/java/org/jd/core/v1/JavaArrayTest.java

Lines changed: 2 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -7,39 +7,21 @@
77

88
package org.jd.core.v1;
99

10-
import junit.framework.TestCase;
1110
import org.jd.core.v1.api.loader.Loader;
1211
import org.jd.core.v1.api.printer.Printer;
1312
import org.jd.core.v1.compiler.CompilerUtil;
1413
import org.jd.core.v1.compiler.JavaSourceFileObject;
1514
import org.jd.core.v1.loader.ClassPathLoader;
1615
import org.jd.core.v1.loader.ZipLoader;
17-
import org.jd.core.v1.model.classfile.ClassFile;
18-
import org.jd.core.v1.model.message.DecompileContext;
1916
import org.jd.core.v1.printer.PlainTextPrinter;
2017
import org.jd.core.v1.regex.PatternMaker;
21-
import org.jd.core.v1.service.converter.classfiletojavasyntax.ClassFileToJavaSyntaxProcessor;
22-
import org.jd.core.v1.service.deserializer.classfile.ClassFileDeserializer;
23-
import org.jd.core.v1.service.fragmenter.javasyntaxtojavafragment.JavaSyntaxToJavaFragmentProcessor;
24-
import org.jd.core.v1.service.layouter.LayoutFragmentProcessor;
25-
import org.jd.core.v1.service.tokenizer.javafragmenttotoken.JavaFragmentToTokenProcessor;
26-
import org.jd.core.v1.service.writer.WriteTokenProcessor;
2718
import org.jd.core.v1.stub.InitializedArrayInTernaryOperator;
2819
import org.junit.Test;
2920

3021
import java.io.InputStream;
3122
import java.util.Collections;
32-
import java.util.Map;
33-
34-
public class JavaArrayTest extends TestCase {
35-
protected ClassFileDeserializer deserializer = new ClassFileDeserializer();
36-
protected ClassFileToJavaSyntaxProcessor converter = new ClassFileToJavaSyntaxProcessor();
37-
protected JavaSyntaxToJavaFragmentProcessor fragmenter = new JavaSyntaxToJavaFragmentProcessor();
38-
protected LayoutFragmentProcessor layouter = new LayoutFragmentProcessor();
39-
//protected TestTokenizeJavaFragmentProcessor tokenizer = new TestTokenizeJavaFragmentProcessor();
40-
protected JavaFragmentToTokenProcessor tokenizer = new JavaFragmentToTokenProcessor();
41-
protected WriteTokenProcessor writer = new WriteTokenProcessor();
4223

24+
public class JavaArrayTest extends AbstractJdTest {
4325
@Test
4426
public void testJdk150Array() throws Exception {
4527
String internalClassName = "org/jd/core/test/Array";
@@ -107,37 +89,8 @@ public void testInitializedArrayInTernaryOperator() throws Exception {
10789
}
10890

10991
protected String decompile(Loader loader, Printer printer, String internalTypeName) throws Exception {
110-
return decompile(loader, printer, internalTypeName, Collections.emptyMap());
111-
}
112-
113-
protected String decompile(Loader loader, Printer printer, String internalTypeName, Map<String, Object> configuration) throws Exception {
114-
DecompileContext decompileContext = new DecompileContext();
115-
decompileContext.setLoader(loader);
116-
decompileContext.setPrinter(printer);
117-
decompileContext.setMainInternalTypeName(internalTypeName);
118-
decompileContext.setConfiguration(configuration);
119-
120-
ClassFile classFile = deserializer.loadClassFile(loader, internalTypeName);
121-
decompileContext.setBody(classFile);
122-
123-
converter.process(decompileContext);
124-
fragmenter.process(decompileContext);
125-
layouter.process(decompileContext);
126-
tokenizer.process(decompileContext);
127-
writer.process(decompileContext);
128-
129-
String source = printer.toString();
130-
131-
printSource(source);
132-
92+
String source = decompile(loader, printer, internalTypeName, Collections.emptyMap());
13393
assertTrue(source.indexOf("// Byte code:") == -1);
134-
13594
return source;
13695
}
137-
138-
protected void printSource(String source) {
139-
System.out.println("- - - - - - - - ");
140-
System.out.println(source);
141-
System.out.println("- - - - - - - - ");
142-
}
14396
}

src/test/java/org/jd/core/v1/JavaAutoboxingTest.java

Lines changed: 3 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -7,42 +7,23 @@
77

88
package org.jd.core.v1;
99

10-
import junit.framework.TestCase;
11-
import org.jd.core.v1.api.loader.Loader;
12-
import org.jd.core.v1.api.printer.Printer;
1310
import org.jd.core.v1.compiler.CompilerUtil;
1411
import org.jd.core.v1.compiler.JavaSourceFileObject;
1512
import org.jd.core.v1.loader.ClassPathLoader;
16-
import org.jd.core.v1.model.classfile.ClassFile;
17-
import org.jd.core.v1.model.message.DecompileContext;
1813
import org.jd.core.v1.printer.PlainTextPrinter;
1914
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;
2615
import org.jd.core.v1.stub.AutoboxingAndUnboxing;
2716
import org.junit.Test;
2817

2918
import java.util.Collections;
30-
import java.util.Map;
31-
32-
public class JavaAutoboxingTest 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();
4019

20+
public class JavaAutoboxingTest extends AbstractJdTest {
4121
@Test
4222
// https://github.com/java-decompiler/jd-core/issues/14
4323
public void testAutoboxing() throws Exception {
4424
String internalClassName = AutoboxingAndUnboxing.class.getName().replace('.', '/');
45-
String source = decompile(new ClassPathLoader(), new PlainTextPrinter(), internalClassName);
25+
String source = decompile(new ClassPathLoader(), new PlainTextPrinter(), internalClassName, Collections.emptyMap());
26+
assertTrue(source.indexOf("// Byte code:") == -1);
4627

4728
// Check decompiled source code
4829
assertTrue(source.matches(PatternMaker.make(": 5 */", "Integer intObj = 10;")));
@@ -51,39 +32,4 @@ public void testAutoboxing() throws Exception {
5132
// Recompile decompiled source code and check errors
5233
assertTrue(CompilerUtil.compile("1.8", new JavaSourceFileObject(internalClassName, source)));
5334
}
54-
55-
protected String decompile(Loader loader, Printer printer, String internalTypeName) throws Exception {
56-
return decompile(loader, printer, internalTypeName, Collections.emptyMap());
57-
}
58-
59-
protected String decompile(Loader loader, Printer printer, String internalTypeName, Map<String, Object> configuration) throws Exception {
60-
DecompileContext decompileContext = new DecompileContext();
61-
decompileContext.setLoader(loader);
62-
decompileContext.setPrinter(printer);
63-
decompileContext.setMainInternalTypeName(internalTypeName);
64-
decompileContext.setConfiguration(configuration);
65-
66-
ClassFile classFile = deserializer.loadClassFile(loader, internalTypeName);
67-
decompileContext.setBody(classFile);
68-
69-
converter.process(decompileContext);
70-
fragmenter.process(decompileContext);
71-
layouter.process(decompileContext);
72-
tokenizer.process(decompileContext);
73-
writer.process(decompileContext);
74-
75-
String source = printer.toString();
76-
77-
printSource(source);
78-
79-
assertTrue(source.indexOf("// Byte code:") == -1);
80-
81-
return source;
82-
}
83-
84-
protected void printSource(String source) {
85-
System.out.println("- - - - - - - - ");
86-
System.out.println(source);
87-
System.out.println("- - - - - - - - ");
88-
}
8935
}

0 commit comments

Comments
 (0)