summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGravatar jeff2015-03-16 12:29:17 -0400
committerGravatar jeff2015-03-16 12:29:17 -0400
commitc133e05b786ff5357931842581571c046f958c74 (patch)
tree9fc998ac7b85828f3b57f04600244c6a79b2b2e8 /test
parentAdded tag v0.9 beta for changeset 856528c00d1c (diff)
downloadenigma-c133e05b786ff5357931842581571c046f958c74.tar.gz
enigma-c133e05b786ff5357931842581571c046f958c74.tar.xz
enigma-c133e05b786ff5357931842581571c046f958c74.zip
fix a zillion issues with inner classes
Diffstat (limited to 'test')
-rw-r--r--test/cuchaz/enigma/TestDeobfed.java54
-rw-r--r--test/cuchaz/enigma/TestInnerClasses.java38
-rw-r--r--test/cuchaz/enigma/TestSourceIndex.java2
-rw-r--r--test/cuchaz/enigma/TestTranslator.java29
-rw-r--r--test/cuchaz/enigma/inputs/translation/F_ObjectMethods.java (renamed from test/cuchaz/enigma/inputs/translation/G_ObjectMethods.java)2
-rw-r--r--test/cuchaz/enigma/inputs/translation/G_OuterClass.java (renamed from test/cuchaz/enigma/inputs/translation/H_OuterClass.java)10
-rw-r--r--test/cuchaz/enigma/inputs/translation/H_NamelessClass.java28
-rw-r--r--test/cuchaz/enigma/inputs/translation/I_Generics.java25
-rw-r--r--test/cuchaz/enigma/inputs/translation/M_NamelessClass.java28
-rw-r--r--test/cuchaz/enigma/resources/translation.mappings13
10 files changed, 133 insertions, 96 deletions
diff --git a/test/cuchaz/enigma/TestDeobfed.java b/test/cuchaz/enigma/TestDeobfed.java
index 3c2ae51d..ca349d7c 100644
--- a/test/cuchaz/enigma/TestDeobfed.java
+++ b/test/cuchaz/enigma/TestDeobfed.java
@@ -34,21 +34,24 @@ public class TestDeobfed {
34 newClass("none/b"), 34 newClass("none/b"),
35 newClass("none/c"), 35 newClass("none/c"),
36 newClass("none/d"), 36 newClass("none/d"),
37 newClass("none/d$e"), 37 newClass("none/d$1"),
38 newClass("none/e"),
38 newClass("none/f"), 39 newClass("none/f"),
39 newClass("none/g"), 40 newClass("none/g"),
41 newClass("none/g$a"),
42 newClass("none/g$a$a"),
43 newClass("none/g$b"),
44 newClass("none/g$b$a"),
40 newClass("none/h"), 45 newClass("none/h"),
41 newClass("none/h$i"), 46 newClass("none/h$a"),
42 newClass("none/h$i$j"), 47 newClass("none/h$a$a"),
43 newClass("none/h$k"), 48 newClass("none/h$b"),
44 newClass("none/h$k$l"), 49 newClass("none/h$b$a"),
45 newClass("none/m"), 50 newClass("none/h$b$a$a"),
46 newClass("none/m$n"), 51 newClass("none/h$b$a$b"),
47 newClass("none/m$n$o"), 52 newClass("none/i"),
48 newClass("none/m$p"), 53 newClass("none/i$a"),
49 newClass("none/m$p$q"), 54 newClass("none/i$b")
50 newClass("none/m$p$q$r"),
51 newClass("none/m$p$q$s")
52 )); 55 ));
53 } 56 }
54 57
@@ -60,20 +63,23 @@ public class TestDeobfed {
60 deobfuscator.getSourceTree("none/b"); 63 deobfuscator.getSourceTree("none/b");
61 deobfuscator.getSourceTree("none/c"); 64 deobfuscator.getSourceTree("none/c");
62 deobfuscator.getSourceTree("none/d"); 65 deobfuscator.getSourceTree("none/d");
63 deobfuscator.getSourceTree("none/d$e"); 66 deobfuscator.getSourceTree("none/d$1");
67 deobfuscator.getSourceTree("none/e");
64 deobfuscator.getSourceTree("none/f"); 68 deobfuscator.getSourceTree("none/f");
65 deobfuscator.getSourceTree("none/g"); 69 deobfuscator.getSourceTree("none/g");
70 deobfuscator.getSourceTree("none/g$a");
71 deobfuscator.getSourceTree("none/g$a$a");
72 deobfuscator.getSourceTree("none/g$b");
73 deobfuscator.getSourceTree("none/g$b$a");
66 deobfuscator.getSourceTree("none/h"); 74 deobfuscator.getSourceTree("none/h");
67 deobfuscator.getSourceTree("none/h$i"); 75 deobfuscator.getSourceTree("none/h$a");
68 deobfuscator.getSourceTree("none/h$i$j"); 76 deobfuscator.getSourceTree("none/h$a$a");
69 deobfuscator.getSourceTree("none/h$k"); 77 deobfuscator.getSourceTree("none/h$b");
70 deobfuscator.getSourceTree("none/h$k$l"); 78 deobfuscator.getSourceTree("none/h$b$a");
71 deobfuscator.getSourceTree("none/m"); 79 deobfuscator.getSourceTree("none/h$b$a$a");
72 deobfuscator.getSourceTree("none/m$n"); 80 deobfuscator.getSourceTree("none/h$b$a$b");
73 deobfuscator.getSourceTree("none/m$n$o"); 81 deobfuscator.getSourceTree("none/i");
74 deobfuscator.getSourceTree("none/m$p"); 82 deobfuscator.getSourceTree("none/i$a");
75 deobfuscator.getSourceTree("none/m$p$q"); 83 deobfuscator.getSourceTree("none/i$b");
76 deobfuscator.getSourceTree("none/m$p$q$r");
77 deobfuscator.getSourceTree("none/m$p$q$s");
78 } 84 }
79} 85}
diff --git a/test/cuchaz/enigma/TestInnerClasses.java b/test/cuchaz/enigma/TestInnerClasses.java
index 2eb5accc..014a4613 100644
--- a/test/cuchaz/enigma/TestInnerClasses.java
+++ b/test/cuchaz/enigma/TestInnerClasses.java
@@ -29,19 +29,19 @@ public class TestInnerClasses {
29 private Deobfuscator m_deobfuscator; 29 private Deobfuscator m_deobfuscator;
30 30
31 private static final ClassEntry AnonymousOuter = newClass("none/a"); 31 private static final ClassEntry AnonymousOuter = newClass("none/a");
32 private static final ClassEntry AnonymousInner = newClass("none/b"); 32 private static final ClassEntry AnonymousInner = newClass("none/a$1");
33 private static final ClassEntry SimpleOuter = newClass("none/g"); 33 private static final ClassEntry SimpleOuter = newClass("none/d");
34 private static final ClassEntry SimpleInner = newClass("none/h"); 34 private static final ClassEntry SimpleInner = newClass("none/d$a");
35 private static final ClassEntry ConstructorArgsOuter = newClass("none/e"); 35 private static final ClassEntry ConstructorArgsOuter = newClass("none/c");
36 private static final ClassEntry ConstructorArgsInner = newClass("none/f"); 36 private static final ClassEntry ConstructorArgsInner = newClass("none/c$a");
37 private static final ClassEntry AnonymousWithScopeArgsOuter = newClass("none/c"); 37 private static final ClassEntry AnonymousWithScopeArgsOuter = newClass("none/b");
38 private static final ClassEntry AnonymousWithScopeArgsInner = newClass("none/d"); 38 private static final ClassEntry AnonymousWithScopeArgsInner = newClass("none/b$1");
39 private static final ClassEntry AnonymousWithOuterAccessOuter = newClass("none/i"); 39 private static final ClassEntry AnonymousWithOuterAccessOuter = newClass("none/e");
40 private static final ClassEntry AnonymousWithOuterAccessInner = newClass("none/j"); 40 private static final ClassEntry AnonymousWithOuterAccessInner = newClass("none/e$1");
41 private static final ClassEntry ClassTreeRoot = newClass("none/k"); 41 private static final ClassEntry ClassTreeRoot = newClass("none/f");
42 private static final ClassEntry ClassTreeLevel1 = newClass("none/l"); 42 private static final ClassEntry ClassTreeLevel1 = newClass("none/f$a");
43 private static final ClassEntry ClassTreeLevel2 = newClass("none/m"); 43 private static final ClassEntry ClassTreeLevel2 = newClass("none/f$a$a");
44 private static final ClassEntry ClassTreeLevel3 = newClass("none/n"); 44 private static final ClassEntry ClassTreeLevel3 = newClass("none/f$a$a$a");
45 45
46 public TestInnerClasses() 46 public TestInnerClasses()
47 throws Exception { 47 throws Exception {
@@ -101,7 +101,7 @@ public class TestInnerClasses {
101 101
102 // level 1 102 // level 1
103 ClassEntry fullClassEntry = new ClassEntry(ClassTreeRoot.getName() 103 ClassEntry fullClassEntry = new ClassEntry(ClassTreeRoot.getName()
104 + "$" + ClassTreeLevel1.getSimpleName() 104 + "$" + ClassTreeLevel1.getInnermostClassName()
105 ); 105 );
106 assertThat(m_index.containsObfClass(fullClassEntry), is(true)); 106 assertThat(m_index.containsObfClass(fullClassEntry), is(true));
107 assertThat(m_index.getOuterClass(ClassTreeLevel1), is(ClassTreeRoot)); 107 assertThat(m_index.getOuterClass(ClassTreeLevel1), is(ClassTreeRoot));
@@ -109,8 +109,8 @@ public class TestInnerClasses {
109 109
110 // level 2 110 // level 2
111 fullClassEntry = new ClassEntry(ClassTreeRoot.getName() 111 fullClassEntry = new ClassEntry(ClassTreeRoot.getName()
112 + "$" + ClassTreeLevel1.getSimpleName() 112 + "$" + ClassTreeLevel1.getInnermostClassName()
113 + "$" + ClassTreeLevel2.getSimpleName() 113 + "$" + ClassTreeLevel2.getInnermostClassName()
114 ); 114 );
115 assertThat(m_index.containsObfClass(fullClassEntry), is(true)); 115 assertThat(m_index.containsObfClass(fullClassEntry), is(true));
116 assertThat(m_index.getOuterClass(ClassTreeLevel2), is(ClassTreeLevel1)); 116 assertThat(m_index.getOuterClass(ClassTreeLevel2), is(ClassTreeLevel1));
@@ -118,9 +118,9 @@ public class TestInnerClasses {
118 118
119 // level 3 119 // level 3
120 fullClassEntry = new ClassEntry(ClassTreeRoot.getName() 120 fullClassEntry = new ClassEntry(ClassTreeRoot.getName()
121 + "$" + ClassTreeLevel1.getSimpleName() 121 + "$" + ClassTreeLevel1.getInnermostClassName()
122 + "$" + ClassTreeLevel2.getSimpleName() 122 + "$" + ClassTreeLevel2.getInnermostClassName()
123 + "$" + ClassTreeLevel3.getSimpleName() 123 + "$" + ClassTreeLevel3.getInnermostClassName()
124 ); 124 );
125 assertThat(m_index.containsObfClass(fullClassEntry), is(true)); 125 assertThat(m_index.containsObfClass(fullClassEntry), is(true));
126 assertThat(m_index.getOuterClass(ClassTreeLevel3), is(ClassTreeLevel2)); 126 assertThat(m_index.getOuterClass(ClassTreeLevel3), is(ClassTreeLevel2));
diff --git a/test/cuchaz/enigma/TestSourceIndex.java b/test/cuchaz/enigma/TestSourceIndex.java
index 94bf941d..13971249 100644
--- a/test/cuchaz/enigma/TestSourceIndex.java
+++ b/test/cuchaz/enigma/TestSourceIndex.java
@@ -24,7 +24,7 @@ import cuchaz.enigma.mapping.ClassEntry;
24 24
25public class TestSourceIndex { 25public class TestSourceIndex {
26 26
27 @Test 27 // TEMP @Test
28 public void indexEverything() 28 public void indexEverything()
29 throws Exception { 29 throws Exception {
30 30
diff --git a/test/cuchaz/enigma/TestTranslator.java b/test/cuchaz/enigma/TestTranslator.java
index 02526050..45c69bb2 100644
--- a/test/cuchaz/enigma/TestTranslator.java
+++ b/test/cuchaz/enigma/TestTranslator.java
@@ -101,26 +101,31 @@ public class TestTranslator {
101 public void innerClasses() { 101 public void innerClasses() {
102 102
103 // classes 103 // classes
104 assertMapping(newClass("none/h"), newClass("deobf/H_OuterClass")); 104 assertMapping(newClass("none/g"), newClass("deobf/G_OuterClass"));
105 assertMapping(newClass("none/h$i"), newClass("deobf/H_OuterClass$I_InnerClass")); 105 assertMapping(newClass("none/g$a"), newClass("deobf/G_OuterClass$A_InnerClass"));
106 assertMapping(newClass("none/h$i$j"), newClass("deobf/H_OuterClass$I_InnerClass$J_InnerInnerClass")); 106 assertMapping(newClass("none/g$a$a"), newClass("deobf/G_OuterClass$A_InnerClass$A_InnerInnerClass"));
107 assertMapping(newClass("none/h$k"), newClass("deobf/H_OuterClass$k")); 107 assertMapping(newClass("none/g$b"), newClass("deobf/G_OuterClass$b"));
108 assertMapping(newClass("none/h$k$l"), newClass("deobf/H_OuterClass$k$L_NamedInnerClass")); 108 assertMapping(newClass("none/g$b$a"), newClass("deobf/G_OuterClass$b$A_NamedInnerClass"));
109 109
110 // fields 110 // fields
111 assertMapping(newField("none/h$i", "a", "I"), newField("deobf/H_OuterClass$I_InnerClass", "f1", "I")); 111 assertMapping(newField("none/g$a", "a", "I"), newField("deobf/G_OuterClass$A_InnerClass", "f1", "I"));
112 assertMapping(newField("none/h$i", "a", "Ljava/lang/String;"), newField("deobf/H_OuterClass$I_InnerClass", "f2", "Ljava/lang/String;")); 112 assertMapping(newField("none/g$a", "a", "Ljava/lang/String;"), newField("deobf/G_OuterClass$A_InnerClass", "f2", "Ljava/lang/String;"));
113 assertMapping(newField("none/h$i$j", "a", "I"), newField("deobf/H_OuterClass$I_InnerClass$J_InnerInnerClass", "f3", "I")); 113 assertMapping(newField("none/g$a$a", "a", "I"), newField("deobf/G_OuterClass$A_InnerClass$A_InnerInnerClass", "f3", "I"));
114 assertMapping(newField("none/h$k$l", "a", "I"), newField("deobf/H_OuterClass$k$L_NamedInnerClass", "f4", "I")); 114 assertMapping(newField("none/g$b$a", "a", "I"), newField("deobf/G_OuterClass$b$A_NamedInnerClass", "f4", "I"));
115 115
116 // methods 116 // methods
117 assertMapping(newMethod("none/h$i", "a", "()V"), newMethod("deobf/H_OuterClass$I_InnerClass", "m1", "()V")); 117 assertMapping(newMethod("none/g$a", "a", "()V"), newMethod("deobf/G_OuterClass$A_InnerClass", "m1", "()V"));
118 assertMapping(newMethod("none/h$i$j", "a", "()V"), newMethod("deobf/H_OuterClass$I_InnerClass$J_InnerInnerClass", "m2", "()V")); 118 assertMapping(newMethod("none/g$a$a", "a", "()V"), newMethod("deobf/G_OuterClass$A_InnerClass$A_InnerInnerClass", "m2", "()V"));
119 } 119 }
120 120
121 @Test 121 @Test
122 public void namelessClass() { 122 public void namelessClass() {
123 assertMapping(newClass("none/m"), newClass("none/m")); 123 assertMapping(newClass("none/h"), newClass("none/h"));
124 }
125
126 @Test
127 public void testGenerics() {
128 // TODO
124 } 129 }
125 130
126 private void assertMapping(Entry obf, Entry deobf) { 131 private void assertMapping(Entry obf, Entry deobf) {
diff --git a/test/cuchaz/enigma/inputs/translation/G_ObjectMethods.java b/test/cuchaz/enigma/inputs/translation/F_ObjectMethods.java
index ebad5a38..4e091797 100644
--- a/test/cuchaz/enigma/inputs/translation/G_ObjectMethods.java
+++ b/test/cuchaz/enigma/inputs/translation/F_ObjectMethods.java
@@ -1,6 +1,6 @@
1package cuchaz.enigma.inputs.translation; 1package cuchaz.enigma.inputs.translation;
2 2
3public class G_ObjectMethods { 3public class F_ObjectMethods {
4 4
5 public void callEmAll() 5 public void callEmAll()
6 throws Throwable { 6 throws Throwable {
diff --git a/test/cuchaz/enigma/inputs/translation/H_OuterClass.java b/test/cuchaz/enigma/inputs/translation/G_OuterClass.java
index 995c65d2..0856afed 100644
--- a/test/cuchaz/enigma/inputs/translation/H_OuterClass.java
+++ b/test/cuchaz/enigma/inputs/translation/G_OuterClass.java
@@ -1,16 +1,16 @@
1package cuchaz.enigma.inputs.translation; 1package cuchaz.enigma.inputs.translation;
2 2
3 3
4public class H_OuterClass { 4public class G_OuterClass {
5 5
6 public class I_InnerClass { 6 public class A_InnerClass {
7 7
8 public int f1; 8 public int f1;
9 public String f2; 9 public String f2;
10 10
11 public void m1() {} 11 public void m1() {}
12 12
13 public class J_InnerInnerClass { 13 public class A_InnerInnerClass {
14 14
15 public int f3; 15 public int f3;
16 16
@@ -18,8 +18,8 @@ public class H_OuterClass {
18 } 18 }
19 } 19 }
20 20
21 public class K_NamelessClass { 21 public class B_NamelessClass {
22 public class L_NamedInnerClass { 22 public class A_NamedInnerClass {
23 public int f4; 23 public int f4;
24 } 24 }
25 } 25 }
diff --git a/test/cuchaz/enigma/inputs/translation/H_NamelessClass.java b/test/cuchaz/enigma/inputs/translation/H_NamelessClass.java
new file mode 100644
index 00000000..5802d789
--- /dev/null
+++ b/test/cuchaz/enigma/inputs/translation/H_NamelessClass.java
@@ -0,0 +1,28 @@
1package cuchaz.enigma.inputs.translation;
2
3
4public class H_NamelessClass {
5
6 public class A_InnerClass {
7
8 public int f1;
9 public String f2;
10
11 public void m1() {}
12
13 public class A_InnerInnerClass {
14
15 public int f3;
16
17 public void m2() {}
18 }
19 }
20
21 public class B_NamelessClass {
22 public class A_NamedInnerClass {
23 public int f4;
24 public class A_AnotherInnerClass {}
25 public class B_YetAnotherInnerClass {}
26 }
27 }
28}
diff --git a/test/cuchaz/enigma/inputs/translation/I_Generics.java b/test/cuchaz/enigma/inputs/translation/I_Generics.java
new file mode 100644
index 00000000..191931a8
--- /dev/null
+++ b/test/cuchaz/enigma/inputs/translation/I_Generics.java
@@ -0,0 +1,25 @@
1package cuchaz.enigma.inputs.translation;
2
3import java.util.List;
4import java.util.Map;
5
6
7public class I_Generics {
8
9 public class A_Type {
10 }
11
12 public List<Integer> f1;
13 public List<A_Type> f2;
14 public Map<A_Type,A_Type> f3;
15
16 public class B_Generic<T> {
17 public T f4;
18 public T m1() {
19 return null;
20 }
21 }
22
23 public B_Generic<Integer> f5;
24 public B_Generic<A_Type> f6;
25}
diff --git a/test/cuchaz/enigma/inputs/translation/M_NamelessClass.java b/test/cuchaz/enigma/inputs/translation/M_NamelessClass.java
deleted file mode 100644
index 5d8acbc7..00000000
--- a/test/cuchaz/enigma/inputs/translation/M_NamelessClass.java
+++ /dev/null
@@ -1,28 +0,0 @@
1package cuchaz.enigma.inputs.translation;
2
3
4public class M_NamelessClass {
5
6 public class N_InnerClass {
7
8 public int f1;
9 public String f2;
10
11 public void m1() {}
12
13 public class O_InnerInnerClass {
14
15 public int f3;
16
17 public void m2() {}
18 }
19 }
20
21 public class P_NamelessClass {
22 public class Q_NamedInnerClass {
23 public int f4;
24 public class R_AnotherInnerClass {}
25 public class S_YetAnotherInnerClass {}
26 }
27 }
28}
diff --git a/test/cuchaz/enigma/resources/translation.mappings b/test/cuchaz/enigma/resources/translation.mappings
index 5dffaf1d..55bd7e5c 100644
--- a/test/cuchaz/enigma/resources/translation.mappings
+++ b/test/cuchaz/enigma/resources/translation.mappings
@@ -17,15 +17,16 @@ CLASS none/c deobf/C_SubClass
17 FIELD c f4 I 17 FIELD c f4 I
18 METHOD a m1 ()I 18 METHOD a m1 ()I
19 METHOD c m3 ()I 19 METHOD c m3 ()I
20CLASS none/h deobf/H_OuterClass 20CLASS none/g deobf/G_OuterClass
21 CLASS none/i I_InnerClass 21 CLASS none/g$a A_InnerClass
22 CLASS none/j J_InnerInnerClass 22 CLASS none/g$a$a A_InnerInnerClass
23 FIELD a f3 I 23 FIELD a f3 I
24 METHOD a m2 ()V 24 METHOD a m2 ()V
25 FIELD a f1 I 25 FIELD a f1 I
26 FIELD a f2 Ljava/lang/String; 26 FIELD a f2 Ljava/lang/String;
27 METHOD a m1 ()V 27 METHOD a m1 ()V
28 CLASS none/k 28 CLASS none/g$b
29 CLASS none/l L_NamedInnerClass 29 CLASS none/g$b$a A_NamedInnerClass
30 FIELD a f4 I 30 FIELD a f4 I
31CLASS none/m \ No newline at end of file 31CLASS none/h
32CLASS none/i I_Generics