summaryrefslogtreecommitdiff
path: root/test/cuchaz/enigma/TestInnerClasses.java
diff options
context:
space:
mode:
authorGravatar jeff2015-02-23 23:29:22 -0500
committerGravatar jeff2015-02-23 23:29:22 -0500
commit2dc7428e37bdd7a119f53d02ce157675509b0d63 (patch)
tree68f409ac726166e427eea3a199eb462130c53ccd /test/cuchaz/enigma/TestInnerClasses.java
parentmake types serializable (diff)
downloadenigma-fork-2dc7428e37bdd7a119f53d02ce157675509b0d63.tar.gz
enigma-fork-2dc7428e37bdd7a119f53d02ce157675509b0d63.tar.xz
enigma-fork-2dc7428e37bdd7a119f53d02ce157675509b0d63.zip
lots of work in better handling of inner classes
also working on recognizing unobfuscated and deobfuscated jars (needed for M3L)
Diffstat (limited to '')
-rw-r--r--test/cuchaz/enigma/TestInnerClasses.java67
1 files changed, 55 insertions, 12 deletions
diff --git a/test/cuchaz/enigma/TestInnerClasses.java b/test/cuchaz/enigma/TestInnerClasses.java
index 2e16a33..2eb5acc 100644
--- a/test/cuchaz/enigma/TestInnerClasses.java
+++ b/test/cuchaz/enigma/TestInnerClasses.java
@@ -18,23 +18,30 @@ import java.util.jar.JarFile;
18 18
19import org.junit.Test; 19import org.junit.Test;
20 20
21import static cuchaz.enigma.TestEntryFactory.*;
22
21import cuchaz.enigma.analysis.JarIndex; 23import cuchaz.enigma.analysis.JarIndex;
24import cuchaz.enigma.mapping.ClassEntry;
22 25
23public class TestInnerClasses { 26public class TestInnerClasses {
24 27
25 private JarIndex m_index; 28 private JarIndex m_index;
26 private Deobfuscator m_deobfuscator; 29 private Deobfuscator m_deobfuscator;
27 30
28 private static final String AnonymousOuter = "none/a"; 31 private static final ClassEntry AnonymousOuter = newClass("none/a");
29 private static final String AnonymousInner = "b"; 32 private static final ClassEntry AnonymousInner = newClass("none/b");
30 private static final String SimpleOuter = "none/g"; 33 private static final ClassEntry SimpleOuter = newClass("none/g");
31 private static final String SimpleInner = "h"; 34 private static final ClassEntry SimpleInner = newClass("none/h");
32 private static final String ConstructorArgsOuter = "none/e"; 35 private static final ClassEntry ConstructorArgsOuter = newClass("none/e");
33 private static final String ConstructorArgsInner = "f"; 36 private static final ClassEntry ConstructorArgsInner = newClass("none/f");
34 private static final String AnonymousWithScopeArgsOuter = "none/c"; 37 private static final ClassEntry AnonymousWithScopeArgsOuter = newClass("none/c");
35 private static final String AnonymousWithScopeArgsInner = "d"; 38 private static final ClassEntry AnonymousWithScopeArgsInner = newClass("none/d");
36 private static final String AnonymousWithOuterAccessOuter = "none/i"; 39 private static final ClassEntry AnonymousWithOuterAccessOuter = newClass("none/i");
37 private static final String AnonymousWithOuterAccessInner = "j"; 40 private static final ClassEntry AnonymousWithOuterAccessInner = newClass("none/j");
41 private static final ClassEntry ClassTreeRoot = newClass("none/k");
42 private static final ClassEntry ClassTreeLevel1 = newClass("none/l");
43 private static final ClassEntry ClassTreeLevel2 = newClass("none/m");
44 private static final ClassEntry ClassTreeLevel3 = newClass("none/n");
38 45
39 public TestInnerClasses() 46 public TestInnerClasses()
40 throws Exception { 47 throws Exception {
@@ -84,7 +91,43 @@ public class TestInnerClasses {
84 decompile(AnonymousWithOuterAccessOuter); 91 decompile(AnonymousWithOuterAccessOuter);
85 } 92 }
86 93
87 private void decompile(String name) { 94 @Test
88 m_deobfuscator.getSourceTree(name); 95 public void classTree() {
96
97 // root level
98 assertThat(m_index.containsObfClass(ClassTreeRoot), is(true));
99 assertThat(m_index.getOuterClass(ClassTreeRoot), is(nullValue()));
100 assertThat(m_index.getInnerClasses(ClassTreeRoot), containsInAnyOrder(ClassTreeLevel1));
101
102 // level 1
103 ClassEntry fullClassEntry = new ClassEntry(ClassTreeRoot.getName()
104 + "$" + ClassTreeLevel1.getSimpleName()
105 );
106 assertThat(m_index.containsObfClass(fullClassEntry), is(true));
107 assertThat(m_index.getOuterClass(ClassTreeLevel1), is(ClassTreeRoot));
108 assertThat(m_index.getInnerClasses(ClassTreeLevel1), containsInAnyOrder(ClassTreeLevel2));
109
110 // level 2
111 fullClassEntry = new ClassEntry(ClassTreeRoot.getName()
112 + "$" + ClassTreeLevel1.getSimpleName()
113 + "$" + ClassTreeLevel2.getSimpleName()
114 );
115 assertThat(m_index.containsObfClass(fullClassEntry), is(true));
116 assertThat(m_index.getOuterClass(ClassTreeLevel2), is(ClassTreeLevel1));
117 assertThat(m_index.getInnerClasses(ClassTreeLevel2), containsInAnyOrder(ClassTreeLevel3));
118
119 // level 3
120 fullClassEntry = new ClassEntry(ClassTreeRoot.getName()
121 + "$" + ClassTreeLevel1.getSimpleName()
122 + "$" + ClassTreeLevel2.getSimpleName()
123 + "$" + ClassTreeLevel3.getSimpleName()
124 );
125 assertThat(m_index.containsObfClass(fullClassEntry), is(true));
126 assertThat(m_index.getOuterClass(ClassTreeLevel3), is(ClassTreeLevel2));
127 assertThat(m_index.getInnerClasses(ClassTreeLevel3), is(empty()));
128 }
129
130 private void decompile(ClassEntry classEntry) {
131 m_deobfuscator.getSourceTree(classEntry.getName());
89 } 132 }
90} 133}