summaryrefslogtreecommitdiff
path: root/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java
diff options
context:
space:
mode:
authorGravatar Thog2017-03-08 08:17:04 +0100
committerGravatar Thog2017-03-08 08:17:04 +0100
commit6e464ea251cab63c776ece0b2a356f1498ffa294 (patch)
tree5ed30c03f5ac4cd2d6877874f5ede576049954f7 /src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java
parentDrop unix case style and implement hashCode when equals is overrided (diff)
downloadenigma-fork-6e464ea251cab63c776ece0b2a356f1498ffa294.tar.gz
enigma-fork-6e464ea251cab63c776ece0b2a356f1498ffa294.tar.xz
enigma-fork-6e464ea251cab63c776ece0b2a356f1498ffa294.zip
Follow Fabric guidelines
Diffstat (limited to 'src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java')
-rw-r--r--src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java117
1 files changed, 55 insertions, 62 deletions
diff --git a/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java b/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java
index 4d9c8dc..6246978 100644
--- a/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java
+++ b/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java
@@ -4,31 +4,12 @@
4 * are made available under the terms of the GNU Lesser General Public 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 5 * License v3.0 which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/lgpl.html 6 * http://www.gnu.org/licenses/lgpl.html
7 * 7 *
8 * Contributors: 8 * Contributors:
9 * Jeff Martin - initial API and implementation 9 * Jeff Martin - initial API and implementation
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma;
12
13import static cuchaz.enigma.TestEntryFactory.newBehaviorReferenceByConstructor;
14import static cuchaz.enigma.TestEntryFactory.newBehaviorReferenceByMethod;
15import static cuchaz.enigma.TestEntryFactory.newClass;
16import static cuchaz.enigma.TestEntryFactory.newConstructor;
17import static cuchaz.enigma.TestEntryFactory.newField;
18import static cuchaz.enigma.TestEntryFactory.newFieldReferenceByConstructor;
19import static cuchaz.enigma.TestEntryFactory.newFieldReferenceByMethod;
20import static cuchaz.enigma.TestEntryFactory.newMethod;
21import static org.hamcrest.MatcherAssert.assertThat;
22import static org.hamcrest.Matchers.contains;
23import static org.hamcrest.Matchers.containsInAnyOrder;
24import static org.hamcrest.Matchers.empty;
25import static org.hamcrest.Matchers.is;
26 11
27import java.util.Collection; 12package cuchaz.enigma;
28import java.util.Set;
29import java.util.jar.JarFile;
30
31import org.junit.Test;
32 13
33import cuchaz.enigma.analysis.Access; 14import cuchaz.enigma.analysis.Access;
34import cuchaz.enigma.analysis.EntryReference; 15import cuchaz.enigma.analysis.EntryReference;
@@ -38,70 +19,82 @@ import cuchaz.enigma.mapping.BehaviorEntry;
38import cuchaz.enigma.mapping.ClassEntry; 19import cuchaz.enigma.mapping.ClassEntry;
39import cuchaz.enigma.mapping.FieldEntry; 20import cuchaz.enigma.mapping.FieldEntry;
40import cuchaz.enigma.mapping.MethodEntry; 21import cuchaz.enigma.mapping.MethodEntry;
22import org.junit.Test;
23
24import java.util.Collection;
25import java.util.Set;
26import java.util.jar.JarFile;
27
28import static cuchaz.enigma.TestEntryFactory.*;
29import static org.hamcrest.MatcherAssert.assertThat;
30import static org.hamcrest.Matchers.contains;
31import static org.hamcrest.Matchers.containsInAnyOrder;
32import static org.hamcrest.Matchers.empty;
33import static org.hamcrest.Matchers.is;
41 34
42public class TestJarIndexInheritanceTree { 35public class TestJarIndexInheritanceTree {
43 36
44 private JarIndex index; 37 private JarIndex index;
45 38
46 private ClassEntry objectClass = newClass("java/lang/Object"); 39 private ClassEntry objectClass = newClass("java/lang/Object");
47 private ClassEntry baseClass = newClass("a"); 40 private ClassEntry baseClass = newClass("a");
48 private ClassEntry subClassA = newClass("b"); 41 private ClassEntry subClassA = newClass("b");
49 private ClassEntry subClassAA = newClass("d"); 42 private ClassEntry subClassAA = newClass("d");
50 private ClassEntry subClassB = newClass("c"); 43 private ClassEntry subClassB = newClass("c");
51 private FieldEntry nameField = newField(baseClass, "a", "Ljava/lang/String;"); 44 private FieldEntry nameField = newField(baseClass, "a", "Ljava/lang/String;");
52 private FieldEntry numThingsField = newField(subClassB, "a", "I"); 45 private FieldEntry numThingsField = newField(subClassB, "a", "I");
53 46
54 public TestJarIndexInheritanceTree() 47 public TestJarIndexInheritanceTree()
55 throws Exception { 48 throws Exception {
56 index = new JarIndex(); 49 index = new JarIndex();
57 index.indexJar(new JarFile("build/test-obf/inheritanceTree.jar"), false); 50 index.indexJar(new JarFile("build/test-obf/inheritanceTree.jar"), false);
58 } 51 }
59 52
60 @Test 53 @Test
61 public void obfEntries() { 54 public void obfEntries() {
62 assertThat(index.getObfClassEntries(), containsInAnyOrder( 55 assertThat(index.getObfClassEntries(), containsInAnyOrder(
63 newClass("cuchaz/enigma/inputs/Keep"), baseClass, subClassA, subClassAA, subClassB 56 newClass("cuchaz/enigma/inputs/Keep"), baseClass, subClassA, subClassAA, subClassB
64 )); 57 ));
65 } 58 }
66 59
67 @Test 60 @Test
68 public void translationIndex() { 61 public void translationIndex() {
69 62
70 TranslationIndex index = this.index.getTranslationIndex(); 63 TranslationIndex index = this.index.getTranslationIndex();
71 64
72 // base class 65 // base class
73 assertThat(index.getSuperclass(baseClass), is(objectClass)); 66 assertThat(index.getSuperclass(baseClass), is(objectClass));
74 assertThat(index.getAncestry(baseClass), contains(objectClass)); 67 assertThat(index.getAncestry(baseClass), contains(objectClass));
75 assertThat(index.getSubclass(baseClass), containsInAnyOrder(subClassA, subClassB 68 assertThat(index.getSubclass(baseClass), containsInAnyOrder(subClassA, subClassB
76 )); 69 ));
77 70
78 // subclass a 71 // subclass a
79 assertThat(index.getSuperclass(subClassA), is(baseClass)); 72 assertThat(index.getSuperclass(subClassA), is(baseClass));
80 assertThat(index.getAncestry(subClassA), contains(baseClass, objectClass)); 73 assertThat(index.getAncestry(subClassA), contains(baseClass, objectClass));
81 assertThat(index.getSubclass(subClassA), contains(subClassAA)); 74 assertThat(index.getSubclass(subClassA), contains(subClassAA));
82 75
83 // subclass aa 76 // subclass aa
84 assertThat(index.getSuperclass(subClassAA), is(subClassA)); 77 assertThat(index.getSuperclass(subClassAA), is(subClassA));
85 assertThat(index.getAncestry(subClassAA), contains(subClassA, baseClass, objectClass)); 78 assertThat(index.getAncestry(subClassAA), contains(subClassA, baseClass, objectClass));
86 assertThat(index.getSubclass(subClassAA), is(empty())); 79 assertThat(index.getSubclass(subClassAA), is(empty()));
87 80
88 // subclass b 81 // subclass b
89 assertThat(index.getSuperclass(subClassB), is(baseClass)); 82 assertThat(index.getSuperclass(subClassB), is(baseClass));
90 assertThat(index.getAncestry(subClassB), contains(baseClass, objectClass)); 83 assertThat(index.getAncestry(subClassB), contains(baseClass, objectClass));
91 assertThat(index.getSubclass(subClassB), is(empty())); 84 assertThat(index.getSubclass(subClassB), is(empty()));
92 } 85 }
93 86
94 @Test 87 @Test
95 public void access() { 88 public void access() {
96 assertThat(index.getAccess(nameField), is(Access.PRIVATE)); 89 assertThat(index.getAccess(nameField), is(Access.PRIVATE));
97 assertThat(index.getAccess(numThingsField), is(Access.PRIVATE)); 90 assertThat(index.getAccess(numThingsField), is(Access.PRIVATE));
98 } 91 }
99 92
100 @Test 93 @Test
101 public void relatedMethodImplementations() { 94 public void relatedMethodImplementations() {
102 95
103 Set<MethodEntry> entries; 96 Set<MethodEntry> entries;
104 97
105 // getName() 98 // getName()
106 entries = index.getRelatedMethodImplementations(newMethod(baseClass, "a", "()Ljava/lang/String;")); 99 entries = index.getRelatedMethodImplementations(newMethod(baseClass, "a", "()Ljava/lang/String;"));
107 assertThat(entries, containsInAnyOrder( 100 assertThat(entries, containsInAnyOrder(
@@ -113,7 +106,7 @@ public class TestJarIndexInheritanceTree {
113 newMethod(baseClass, "a", "()Ljava/lang/String;"), 106 newMethod(baseClass, "a", "()Ljava/lang/String;"),
114 newMethod(subClassAA, "a", "()Ljava/lang/String;") 107 newMethod(subClassAA, "a", "()Ljava/lang/String;")
115 )); 108 ));
116 109
117 // doBaseThings() 110 // doBaseThings()
118 entries = index.getRelatedMethodImplementations(newMethod(baseClass, "a", "()V")); 111 entries = index.getRelatedMethodImplementations(newMethod(baseClass, "a", "()V"));
119 assertThat(entries, containsInAnyOrder( 112 assertThat(entries, containsInAnyOrder(
@@ -133,24 +126,24 @@ public class TestJarIndexInheritanceTree {
133 newMethod(subClassAA, "a", "()V"), 126 newMethod(subClassAA, "a", "()V"),
134 newMethod(subClassB, "a", "()V") 127 newMethod(subClassB, "a", "()V")
135 )); 128 ));
136 129
137 // doBThings 130 // doBThings
138 entries = index.getRelatedMethodImplementations(newMethod(subClassB, "b", "()V")); 131 entries = index.getRelatedMethodImplementations(newMethod(subClassB, "b", "()V"));
139 assertThat(entries, containsInAnyOrder(newMethod(subClassB, "b", "()V"))); 132 assertThat(entries, containsInAnyOrder(newMethod(subClassB, "b", "()V")));
140 } 133 }
141 134
142 @Test 135 @Test
143 @SuppressWarnings("unchecked") 136 @SuppressWarnings("unchecked")
144 public void fieldReferences() { 137 public void fieldReferences() {
145 Collection<EntryReference<FieldEntry,BehaviorEntry>> references; 138 Collection<EntryReference<FieldEntry, BehaviorEntry>> references;
146 139
147 // name 140 // name
148 references = index.getFieldReferences(nameField); 141 references = index.getFieldReferences(nameField);
149 assertThat(references, containsInAnyOrder( 142 assertThat(references, containsInAnyOrder(
150 newFieldReferenceByConstructor(nameField, baseClass.getName(), "(Ljava/lang/String;)V"), 143 newFieldReferenceByConstructor(nameField, baseClass.getName(), "(Ljava/lang/String;)V"),
151 newFieldReferenceByMethod(nameField, baseClass.getName(), "a", "()Ljava/lang/String;") 144 newFieldReferenceByMethod(nameField, baseClass.getName(), "a", "()Ljava/lang/String;")
152 )); 145 ));
153 146
154 // numThings 147 // numThings
155 references = index.getFieldReferences(numThingsField); 148 references = index.getFieldReferences(numThingsField);
156 assertThat(references, containsInAnyOrder( 149 assertThat(references, containsInAnyOrder(
@@ -158,14 +151,14 @@ public class TestJarIndexInheritanceTree {
158 newFieldReferenceByMethod(numThingsField, subClassB.getName(), "b", "()V") 151 newFieldReferenceByMethod(numThingsField, subClassB.getName(), "b", "()V")
159 )); 152 ));
160 } 153 }
161 154
162 @Test 155 @Test
163 @SuppressWarnings("unchecked") 156 @SuppressWarnings("unchecked")
164 public void behaviorReferences() { 157 public void behaviorReferences() {
165 158
166 BehaviorEntry source; 159 BehaviorEntry source;
167 Collection<EntryReference<BehaviorEntry,BehaviorEntry>> references; 160 Collection<EntryReference<BehaviorEntry, BehaviorEntry>> references;
168 161
169 // baseClass constructor 162 // baseClass constructor
170 source = newConstructor(baseClass, "(Ljava/lang/String;)V"); 163 source = newConstructor(baseClass, "(Ljava/lang/String;)V");
171 references = index.getBehaviorReferences(source); 164 references = index.getBehaviorReferences(source);
@@ -173,14 +166,14 @@ public class TestJarIndexInheritanceTree {
173 newBehaviorReferenceByConstructor(source, subClassA.getName(), "(Ljava/lang/String;)V"), 166 newBehaviorReferenceByConstructor(source, subClassA.getName(), "(Ljava/lang/String;)V"),
174 newBehaviorReferenceByConstructor(source, subClassB.getName(), "()V") 167 newBehaviorReferenceByConstructor(source, subClassB.getName(), "()V")
175 )); 168 ));
176 169
177 // subClassA constructor 170 // subClassA constructor
178 source = newConstructor(subClassA, "(Ljava/lang/String;)V"); 171 source = newConstructor(subClassA, "(Ljava/lang/String;)V");
179 references = index.getBehaviorReferences(source); 172 references = index.getBehaviorReferences(source);
180 assertThat(references, containsInAnyOrder( 173 assertThat(references, containsInAnyOrder(
181 newBehaviorReferenceByConstructor(source, subClassAA.getName(), "()V") 174 newBehaviorReferenceByConstructor(source, subClassAA.getName(), "()V")
182 )); 175 ));
183 176
184 // baseClass.getName() 177 // baseClass.getName()
185 source = newMethod(baseClass, "a", "()Ljava/lang/String;"); 178 source = newMethod(baseClass, "a", "()Ljava/lang/String;");
186 references = index.getBehaviorReferences(source); 179 references = index.getBehaviorReferences(source);
@@ -188,7 +181,7 @@ public class TestJarIndexInheritanceTree {
188 newBehaviorReferenceByMethod(source, subClassAA.getName(), "a", "()Ljava/lang/String;"), 181 newBehaviorReferenceByMethod(source, subClassAA.getName(), "a", "()Ljava/lang/String;"),
189 newBehaviorReferenceByMethod(source, subClassB.getName(), "a", "()V") 182 newBehaviorReferenceByMethod(source, subClassB.getName(), "a", "()V")
190 )); 183 ));
191 184
192 // subclassAA.getName() 185 // subclassAA.getName()
193 source = newMethod(subClassAA, "a", "()Ljava/lang/String;"); 186 source = newMethod(subClassAA, "a", "()Ljava/lang/String;");
194 references = index.getBehaviorReferences(source); 187 references = index.getBehaviorReferences(source);
@@ -196,38 +189,38 @@ public class TestJarIndexInheritanceTree {
196 newBehaviorReferenceByMethod(source, subClassAA.getName(), "a", "()V") 189 newBehaviorReferenceByMethod(source, subClassAA.getName(), "a", "()V")
197 )); 190 ));
198 } 191 }
199 192
200 @Test 193 @Test
201 public void containsEntries() { 194 public void containsEntries() {
202 195
203 // classes 196 // classes
204 assertThat(index.containsObfClass(baseClass), is(true)); 197 assertThat(index.containsObfClass(baseClass), is(true));
205 assertThat(index.containsObfClass(subClassA), is(true)); 198 assertThat(index.containsObfClass(subClassA), is(true));
206 assertThat(index.containsObfClass(subClassAA), is(true)); 199 assertThat(index.containsObfClass(subClassAA), is(true));
207 assertThat(index.containsObfClass(subClassB), is(true)); 200 assertThat(index.containsObfClass(subClassB), is(true));
208 201
209 // fields 202 // fields
210 assertThat(index.containsObfField(nameField), is(true)); 203 assertThat(index.containsObfField(nameField), is(true));
211 assertThat(index.containsObfField(numThingsField), is(true)); 204 assertThat(index.containsObfField(numThingsField), is(true));
212 205
213 // methods 206 // methods
214 // getName() 207 // getName()
215 assertThat(index.containsObfBehavior(newMethod(baseClass, "a", "()Ljava/lang/String;")), is(true)); 208 assertThat(index.containsObfBehavior(newMethod(baseClass, "a", "()Ljava/lang/String;")), is(true));
216 assertThat(index.containsObfBehavior(newMethod(subClassA, "a", "()Ljava/lang/String;")), is(false)); 209 assertThat(index.containsObfBehavior(newMethod(subClassA, "a", "()Ljava/lang/String;")), is(false));
217 assertThat(index.containsObfBehavior(newMethod(subClassAA, "a", "()Ljava/lang/String;")), is(true)); 210 assertThat(index.containsObfBehavior(newMethod(subClassAA, "a", "()Ljava/lang/String;")), is(true));
218 assertThat(index.containsObfBehavior(newMethod(subClassB, "a", "()Ljava/lang/String;")), is(false)); 211 assertThat(index.containsObfBehavior(newMethod(subClassB, "a", "()Ljava/lang/String;")), is(false));
219 212
220 // doBaseThings() 213 // doBaseThings()
221 assertThat(index.containsObfBehavior(newMethod(baseClass, "a", "()V")), is(true)); 214 assertThat(index.containsObfBehavior(newMethod(baseClass, "a", "()V")), is(true));
222 assertThat(index.containsObfBehavior(newMethod(subClassA, "a", "()V")), is(false)); 215 assertThat(index.containsObfBehavior(newMethod(subClassA, "a", "()V")), is(false));
223 assertThat(index.containsObfBehavior(newMethod(subClassAA, "a", "()V")), is(true)); 216 assertThat(index.containsObfBehavior(newMethod(subClassAA, "a", "()V")), is(true));
224 assertThat(index.containsObfBehavior(newMethod(subClassB, "a", "()V")), is(true)); 217 assertThat(index.containsObfBehavior(newMethod(subClassB, "a", "()V")), is(true));
225 218
226 // doBThings() 219 // doBThings()
227 assertThat(index.containsObfBehavior(newMethod(baseClass, "b", "()V")), is(false)); 220 assertThat(index.containsObfBehavior(newMethod(baseClass, "b", "()V")), is(false));
228 assertThat(index.containsObfBehavior(newMethod(subClassA, "b", "()V")), is(false)); 221 assertThat(index.containsObfBehavior(newMethod(subClassA, "b", "()V")), is(false));
229 assertThat(index.containsObfBehavior(newMethod(subClassAA, "b", "()V")), is(false)); 222 assertThat(index.containsObfBehavior(newMethod(subClassAA, "b", "()V")), is(false));
230 assertThat(index.containsObfBehavior(newMethod(subClassB, "b", "()V")), is(true)); 223 assertThat(index.containsObfBehavior(newMethod(subClassB, "b", "()V")), is(true));
231 224
232 } 225 }
233} 226}