summaryrefslogtreecommitdiff
path: root/test/cuchaz/enigma/TestTranslator.java
diff options
context:
space:
mode:
authorGravatar lclc982016-06-30 00:49:21 +1000
committerGravatar GitHub2016-06-30 00:49:21 +1000
commit4be005617b3b8c3578cca07c5d085d12916f0d1d (patch)
treedb163431f38703e26da417ef05eaea2b27a498b9 /test/cuchaz/enigma/TestTranslator.java
parentSome small changes to fix idea importing (diff)
downloadenigma-fork-4be005617b3b8c3578cca07c5d085d12916f0d1d.tar.gz
enigma-fork-4be005617b3b8c3578cca07c5d085d12916f0d1d.tar.xz
enigma-fork-4be005617b3b8c3578cca07c5d085d12916f0d1d.zip
Json format (#2)
* Added new format * Fixed bug * Updated Version
Diffstat (limited to 'test/cuchaz/enigma/TestTranslator.java')
-rw-r--r--test/cuchaz/enigma/TestTranslator.java170
1 files changed, 0 insertions, 170 deletions
diff --git a/test/cuchaz/enigma/TestTranslator.java b/test/cuchaz/enigma/TestTranslator.java
deleted file mode 100644
index 9e58d25..0000000
--- a/test/cuchaz/enigma/TestTranslator.java
+++ /dev/null
@@ -1,170 +0,0 @@
1/*******************************************************************************
2 * Copyright (c) 2015 Jeff Martin.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the GNU Lesser General Public
5 * License v3.0 which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/lgpl.html
7 *
8 * Contributors:
9 * Jeff Martin - initial API and implementation
10 ******************************************************************************/
11package cuchaz.enigma;
12
13import static cuchaz.enigma.TestEntryFactory.*;
14import static org.hamcrest.MatcherAssert.*;
15import static org.hamcrest.Matchers.*;
16
17import java.io.InputStream;
18import java.io.InputStreamReader;
19import java.util.jar.JarFile;
20
21import org.junit.BeforeClass;
22import org.junit.Test;
23
24import cuchaz.enigma.mapping.Entry;
25import cuchaz.enigma.mapping.Mappings;
26import cuchaz.enigma.mapping.MappingsReader;
27import cuchaz.enigma.mapping.TranslationDirection;
28import cuchaz.enigma.mapping.Translator;
29
30
31public class TestTranslator {
32
33 private static Deobfuscator m_deobfuscator;
34 private static Mappings m_mappings;
35 private static Translator m_deobfTranslator;
36 private static Translator m_obfTranslator;
37
38 @BeforeClass
39 public static void beforeClass()
40 throws Exception {
41 m_deobfuscator = new Deobfuscator(new JarFile("build/test-obf/translation.jar"));
42 try (InputStream in = TestTranslator.class.getResourceAsStream("/cuchaz/enigma/resources/translation.mappings")) {
43 m_mappings = new MappingsReader().read(new InputStreamReader(in));
44 m_deobfuscator.setMappings(m_mappings);
45 m_deobfTranslator = m_deobfuscator.getTranslator(TranslationDirection.Deobfuscating);
46 m_obfTranslator = m_deobfuscator.getTranslator(TranslationDirection.Obfuscating);
47 }
48 }
49
50 @Test
51 public void basicClasses() {
52 assertMapping(newClass("none/a"), newClass("deobf/A_Basic"));
53 assertMapping(newClass("none/b"), newClass("deobf/B_BaseClass"));
54 assertMapping(newClass("none/c"), newClass("deobf/C_SubClass"));
55 }
56
57 @Test
58 public void basicFields() {
59 assertMapping(newField("none/a", "a", "I"), newField("deobf/A_Basic", "f1", "I"));
60 assertMapping(newField("none/a", "a", "F"), newField("deobf/A_Basic", "f2", "F"));
61 assertMapping(newField("none/a", "a", "Ljava/lang/String;"), newField("deobf/A_Basic", "f3", "Ljava/lang/String;"));
62 }
63
64 @Test
65 public void basicMethods() {
66 assertMapping(newMethod("none/a", "a", "()V"), newMethod("deobf/A_Basic", "m1", "()V"));
67 assertMapping(newMethod("none/a", "a", "()I"), newMethod("deobf/A_Basic", "m2", "()I"));
68 assertMapping(newMethod("none/a", "a", "(I)V"), newMethod("deobf/A_Basic", "m3", "(I)V"));
69 assertMapping(newMethod("none/a", "a", "(I)I"), newMethod("deobf/A_Basic", "m4", "(I)I"));
70 }
71
72 // TODO: basic constructors
73
74 @Test
75 public void inheritanceFields() {
76 assertMapping(newField("none/b", "a", "I"), newField("deobf/B_BaseClass", "f1", "I"));
77 assertMapping(newField("none/b", "a", "C"), newField("deobf/B_BaseClass", "f2", "C"));
78 assertMapping(newField("none/c", "b", "I"), newField("deobf/C_SubClass", "f3", "I"));
79 assertMapping(newField("none/c", "c", "I"), newField("deobf/C_SubClass", "f4", "I"));
80 }
81
82 @Test
83 public void inheritanceFieldsShadowing() {
84 assertMapping(newField("none/c", "b", "C"), newField("deobf/C_SubClass", "f2", "C"));
85 }
86
87 @Test
88 public void inheritanceFieldsBySubClass() {
89 assertMapping(newField("none/c", "a", "I"), newField("deobf/C_SubClass", "f1", "I"));
90 // NOTE: can't reference b.C by subclass since it's shadowed
91 }
92
93 @Test
94 public void inheritanceMethods() {
95 assertMapping(newMethod("none/b", "a", "()I"), newMethod("deobf/B_BaseClass", "m1", "()I"));
96 assertMapping(newMethod("none/b", "b", "()I"), newMethod("deobf/B_BaseClass", "m2", "()I"));
97 assertMapping(newMethod("none/c", "c", "()I"), newMethod("deobf/C_SubClass", "m3", "()I"));
98 }
99
100 @Test
101 public void inheritanceMethodsOverrides() {
102 assertMapping(newMethod("none/c", "a", "()I"), newMethod("deobf/C_SubClass", "m1", "()I"));
103 }
104
105 @Test
106 public void inheritanceMethodsBySubClass() {
107 assertMapping(newMethod("none/c", "b", "()I"), newMethod("deobf/C_SubClass", "m2", "()I"));
108 }
109
110 @Test
111 public void innerClasses() {
112
113 // classes
114 assertMapping(newClass("none/g"), newClass("deobf/G_OuterClass"));
115 assertMapping(newClass("none/g$a"), newClass("deobf/G_OuterClass$A_InnerClass"));
116 assertMapping(newClass("none/g$a$a"), newClass("deobf/G_OuterClass$A_InnerClass$A_InnerInnerClass"));
117 assertMapping(newClass("none/g$b"), newClass("deobf/G_OuterClass$b"));
118 assertMapping(newClass("none/g$b$a"), newClass("deobf/G_OuterClass$b$A_NamedInnerClass"));
119
120 // fields
121 assertMapping(newField("none/g$a", "a", "I"), newField("deobf/G_OuterClass$A_InnerClass", "f1", "I"));
122 assertMapping(newField("none/g$a", "a", "Ljava/lang/String;"), newField("deobf/G_OuterClass$A_InnerClass", "f2", "Ljava/lang/String;"));
123 assertMapping(newField("none/g$a$a", "a", "I"), newField("deobf/G_OuterClass$A_InnerClass$A_InnerInnerClass", "f3", "I"));
124 assertMapping(newField("none/g$b$a", "a", "I"), newField("deobf/G_OuterClass$b$A_NamedInnerClass", "f4", "I"));
125
126 // methods
127 assertMapping(newMethod("none/g$a", "a", "()V"), newMethod("deobf/G_OuterClass$A_InnerClass", "m1", "()V"));
128 assertMapping(newMethod("none/g$a$a", "a", "()V"), newMethod("deobf/G_OuterClass$A_InnerClass$A_InnerInnerClass", "m2", "()V"));
129 }
130
131 @Test
132 public void namelessClass() {
133 assertMapping(newClass("none/h"), newClass("none/h"));
134 }
135
136 @Test
137 public void testGenerics() {
138
139 // classes
140 assertMapping(newClass("none/i"), newClass("deobf/I_Generics"));
141 assertMapping(newClass("none/i$a"), newClass("deobf/I_Generics$A_Type"));
142 assertMapping(newClass("none/i$b"), newClass("deobf/I_Generics$B_Generic"));
143
144 // fields
145 assertMapping(newField("none/i", "a", "Ljava/util/List;"), newField("deobf/I_Generics", "f1", "Ljava/util/List;"));
146 assertMapping(newField("none/i", "b", "Ljava/util/List;"), newField("deobf/I_Generics", "f2", "Ljava/util/List;"));
147 assertMapping(newField("none/i", "a", "Ljava/util/Map;"), newField("deobf/I_Generics", "f3", "Ljava/util/Map;"));
148 assertMapping(newField("none/i$b", "a", "Ljava/lang/Object;"), newField("deobf/I_Generics$B_Generic", "f4", "Ljava/lang/Object;"));
149 assertMapping(newField("none/i", "a", "Lnone/i$b;"), newField("deobf/I_Generics", "f5", "Ldeobf/I_Generics$B_Generic;"));
150 assertMapping(newField("none/i", "b", "Lnone/i$b;"), newField("deobf/I_Generics", "f6", "Ldeobf/I_Generics$B_Generic;"));
151
152 // methods
153 assertMapping(newMethod("none/i$b", "a", "()Ljava/lang/Object;"), newMethod("deobf/I_Generics$B_Generic", "m1", "()Ljava/lang/Object;"));
154 }
155
156 private void assertMapping(Entry obf, Entry deobf) {
157 assertThat(m_deobfTranslator.translateEntry(obf), is(deobf));
158 assertThat(m_obfTranslator.translateEntry(deobf), is(obf));
159
160 String deobfName = m_deobfTranslator.translate(obf);
161 if (deobfName != null) {
162 assertThat(deobfName, is(deobf.getName()));
163 }
164
165 String obfName = m_obfTranslator.translate(deobf);
166 if (obfName != null) {
167 assertThat(obfName, is(obf.getName()));
168 }
169 }
170}