summaryrefslogtreecommitdiff
path: root/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java')
-rw-r--r--src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java176
1 files changed, 85 insertions, 91 deletions
diff --git a/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java b/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java
index 28408f2a..4d9c8dc1 100644
--- a/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java
+++ b/src/test/java/cuchaz/enigma/TestJarIndexInheritanceTree.java
@@ -41,66 +41,60 @@ import cuchaz.enigma.mapping.MethodEntry;
41 41
42public class TestJarIndexInheritanceTree { 42public class TestJarIndexInheritanceTree {
43 43
44 private JarIndex m_index; 44 private JarIndex index;
45 45
46 private ClassEntry m_objectClass = newClass("java/lang/Object"); 46 private ClassEntry objectClass = newClass("java/lang/Object");
47 private ClassEntry m_baseClass = newClass("a"); 47 private ClassEntry baseClass = newClass("a");
48 private ClassEntry m_subClassA = newClass("b"); 48 private ClassEntry subClassA = newClass("b");
49 private ClassEntry m_subClassAA = newClass("d"); 49 private ClassEntry subClassAA = newClass("d");
50 private ClassEntry m_subClassB = newClass("c"); 50 private ClassEntry subClassB = newClass("c");
51 private FieldEntry m_nameField = newField(m_baseClass, "a", "Ljava/lang/String;"); 51 private FieldEntry nameField = newField(baseClass, "a", "Ljava/lang/String;");
52 private FieldEntry m_numThingsField = newField(m_subClassB, "a", "I"); 52 private FieldEntry numThingsField = newField(subClassB, "a", "I");
53 53
54 public TestJarIndexInheritanceTree() 54 public TestJarIndexInheritanceTree()
55 throws Exception { 55 throws Exception {
56 m_index = new JarIndex(); 56 index = new JarIndex();
57 m_index.indexJar(new JarFile("build/test-obf/inheritanceTree.jar"), false); 57 index.indexJar(new JarFile("build/test-obf/inheritanceTree.jar"), false);
58 } 58 }
59 59
60 @Test 60 @Test
61 public void obfEntries() { 61 public void obfEntries() {
62 assertThat(m_index.getObfClassEntries(), containsInAnyOrder( 62 assertThat(index.getObfClassEntries(), containsInAnyOrder(
63 newClass("cuchaz/enigma/inputs/Keep"), 63 newClass("cuchaz/enigma/inputs/Keep"), baseClass, subClassA, subClassAA, subClassB
64 m_baseClass,
65 m_subClassA,
66 m_subClassAA,
67 m_subClassB
68 )); 64 ));
69 } 65 }
70 66
71 @Test 67 @Test
72 public void translationIndex() { 68 public void translationIndex() {
73 69
74 TranslationIndex index = m_index.getTranslationIndex(); 70 TranslationIndex index = this.index.getTranslationIndex();
75 71
76 // base class 72 // base class
77 assertThat(index.getSuperclass(m_baseClass), is(m_objectClass)); 73 assertThat(index.getSuperclass(baseClass), is(objectClass));
78 assertThat(index.getAncestry(m_baseClass), contains(m_objectClass)); 74 assertThat(index.getAncestry(baseClass), contains(objectClass));
79 assertThat(index.getSubclass(m_baseClass), containsInAnyOrder( 75 assertThat(index.getSubclass(baseClass), containsInAnyOrder(subClassA, subClassB
80 m_subClassA,
81 m_subClassB
82 )); 76 ));
83 77
84 // subclass a 78 // subclass a
85 assertThat(index.getSuperclass(m_subClassA), is(m_baseClass)); 79 assertThat(index.getSuperclass(subClassA), is(baseClass));
86 assertThat(index.getAncestry(m_subClassA), contains(m_baseClass, m_objectClass)); 80 assertThat(index.getAncestry(subClassA), contains(baseClass, objectClass));
87 assertThat(index.getSubclass(m_subClassA), contains(m_subClassAA)); 81 assertThat(index.getSubclass(subClassA), contains(subClassAA));
88 82
89 // subclass aa 83 // subclass aa
90 assertThat(index.getSuperclass(m_subClassAA), is(m_subClassA)); 84 assertThat(index.getSuperclass(subClassAA), is(subClassA));
91 assertThat(index.getAncestry(m_subClassAA), contains(m_subClassA, m_baseClass, m_objectClass)); 85 assertThat(index.getAncestry(subClassAA), contains(subClassA, baseClass, objectClass));
92 assertThat(index.getSubclass(m_subClassAA), is(empty())); 86 assertThat(index.getSubclass(subClassAA), is(empty()));
93 87
94 // subclass b 88 // subclass b
95 assertThat(index.getSuperclass(m_subClassB), is(m_baseClass)); 89 assertThat(index.getSuperclass(subClassB), is(baseClass));
96 assertThat(index.getAncestry(m_subClassB), contains(m_baseClass, m_objectClass)); 90 assertThat(index.getAncestry(subClassB), contains(baseClass, objectClass));
97 assertThat(index.getSubclass(m_subClassB), is(empty())); 91 assertThat(index.getSubclass(subClassB), is(empty()));
98 } 92 }
99 93
100 @Test 94 @Test
101 public void access() { 95 public void access() {
102 assertThat(m_index.getAccess(m_nameField), is(Access.Private)); 96 assertThat(index.getAccess(nameField), is(Access.PRIVATE));
103 assertThat(m_index.getAccess(m_numThingsField), is(Access.Private)); 97 assertThat(index.getAccess(numThingsField), is(Access.PRIVATE));
104 } 98 }
105 99
106 @Test 100 @Test
@@ -109,40 +103,40 @@ public class TestJarIndexInheritanceTree {
109 Set<MethodEntry> entries; 103 Set<MethodEntry> entries;
110 104
111 // getName() 105 // getName()
112 entries = m_index.getRelatedMethodImplementations(newMethod(m_baseClass, "a", "()Ljava/lang/String;")); 106 entries = index.getRelatedMethodImplementations(newMethod(baseClass, "a", "()Ljava/lang/String;"));
113 assertThat(entries, containsInAnyOrder( 107 assertThat(entries, containsInAnyOrder(
114 newMethod(m_baseClass, "a", "()Ljava/lang/String;"), 108 newMethod(baseClass, "a", "()Ljava/lang/String;"),
115 newMethod(m_subClassAA, "a", "()Ljava/lang/String;") 109 newMethod(subClassAA, "a", "()Ljava/lang/String;")
116 )); 110 ));
117 entries = m_index.getRelatedMethodImplementations(newMethod(m_subClassAA, "a", "()Ljava/lang/String;")); 111 entries = index.getRelatedMethodImplementations(newMethod(subClassAA, "a", "()Ljava/lang/String;"));
118 assertThat(entries, containsInAnyOrder( 112 assertThat(entries, containsInAnyOrder(
119 newMethod(m_baseClass, "a", "()Ljava/lang/String;"), 113 newMethod(baseClass, "a", "()Ljava/lang/String;"),
120 newMethod(m_subClassAA, "a", "()Ljava/lang/String;") 114 newMethod(subClassAA, "a", "()Ljava/lang/String;")
121 )); 115 ));
122 116
123 // doBaseThings() 117 // doBaseThings()
124 entries = m_index.getRelatedMethodImplementations(newMethod(m_baseClass, "a", "()V")); 118 entries = index.getRelatedMethodImplementations(newMethod(baseClass, "a", "()V"));
125 assertThat(entries, containsInAnyOrder( 119 assertThat(entries, containsInAnyOrder(
126 newMethod(m_baseClass, "a", "()V"), 120 newMethod(baseClass, "a", "()V"),
127 newMethod(m_subClassAA, "a", "()V"), 121 newMethod(subClassAA, "a", "()V"),
128 newMethod(m_subClassB, "a", "()V") 122 newMethod(subClassB, "a", "()V")
129 )); 123 ));
130 entries = m_index.getRelatedMethodImplementations(newMethod(m_subClassAA, "a", "()V")); 124 entries = index.getRelatedMethodImplementations(newMethod(subClassAA, "a", "()V"));
131 assertThat(entries, containsInAnyOrder( 125 assertThat(entries, containsInAnyOrder(
132 newMethod(m_baseClass, "a", "()V"), 126 newMethod(baseClass, "a", "()V"),
133 newMethod(m_subClassAA, "a", "()V"), 127 newMethod(subClassAA, "a", "()V"),
134 newMethod(m_subClassB, "a", "()V") 128 newMethod(subClassB, "a", "()V")
135 )); 129 ));
136 entries = m_index.getRelatedMethodImplementations(newMethod(m_subClassB, "a", "()V")); 130 entries = index.getRelatedMethodImplementations(newMethod(subClassB, "a", "()V"));
137 assertThat(entries, containsInAnyOrder( 131 assertThat(entries, containsInAnyOrder(
138 newMethod(m_baseClass, "a", "()V"), 132 newMethod(baseClass, "a", "()V"),
139 newMethod(m_subClassAA, "a", "()V"), 133 newMethod(subClassAA, "a", "()V"),
140 newMethod(m_subClassB, "a", "()V") 134 newMethod(subClassB, "a", "()V")
141 )); 135 ));
142 136
143 // doBThings 137 // doBThings
144 entries = m_index.getRelatedMethodImplementations(newMethod(m_subClassB, "b", "()V")); 138 entries = index.getRelatedMethodImplementations(newMethod(subClassB, "b", "()V"));
145 assertThat(entries, containsInAnyOrder(newMethod(m_subClassB, "b", "()V"))); 139 assertThat(entries, containsInAnyOrder(newMethod(subClassB, "b", "()V")));
146 } 140 }
147 141
148 @Test 142 @Test
@@ -151,17 +145,17 @@ public class TestJarIndexInheritanceTree {
151 Collection<EntryReference<FieldEntry,BehaviorEntry>> references; 145 Collection<EntryReference<FieldEntry,BehaviorEntry>> references;
152 146
153 // name 147 // name
154 references = m_index.getFieldReferences(m_nameField); 148 references = index.getFieldReferences(nameField);
155 assertThat(references, containsInAnyOrder( 149 assertThat(references, containsInAnyOrder(
156 newFieldReferenceByConstructor(m_nameField, m_baseClass.getName(), "(Ljava/lang/String;)V"), 150 newFieldReferenceByConstructor(nameField, baseClass.getName(), "(Ljava/lang/String;)V"),
157 newFieldReferenceByMethod(m_nameField, m_baseClass.getName(), "a", "()Ljava/lang/String;") 151 newFieldReferenceByMethod(nameField, baseClass.getName(), "a", "()Ljava/lang/String;")
158 )); 152 ));
159 153
160 // numThings 154 // numThings
161 references = m_index.getFieldReferences(m_numThingsField); 155 references = index.getFieldReferences(numThingsField);
162 assertThat(references, containsInAnyOrder( 156 assertThat(references, containsInAnyOrder(
163 newFieldReferenceByConstructor(m_numThingsField, m_subClassB.getName(), "()V"), 157 newFieldReferenceByConstructor(numThingsField, subClassB.getName(), "()V"),
164 newFieldReferenceByMethod(m_numThingsField, m_subClassB.getName(), "b", "()V") 158 newFieldReferenceByMethod(numThingsField, subClassB.getName(), "b", "()V")
165 )); 159 ));
166 } 160 }
167 161
@@ -173,33 +167,33 @@ public class TestJarIndexInheritanceTree {
173 Collection<EntryReference<BehaviorEntry,BehaviorEntry>> references; 167 Collection<EntryReference<BehaviorEntry,BehaviorEntry>> references;
174 168
175 // baseClass constructor 169 // baseClass constructor
176 source = newConstructor(m_baseClass, "(Ljava/lang/String;)V"); 170 source = newConstructor(baseClass, "(Ljava/lang/String;)V");
177 references = m_index.getBehaviorReferences(source); 171 references = index.getBehaviorReferences(source);
178 assertThat(references, containsInAnyOrder( 172 assertThat(references, containsInAnyOrder(
179 newBehaviorReferenceByConstructor(source, m_subClassA.getName(), "(Ljava/lang/String;)V"), 173 newBehaviorReferenceByConstructor(source, subClassA.getName(), "(Ljava/lang/String;)V"),
180 newBehaviorReferenceByConstructor(source, m_subClassB.getName(), "()V") 174 newBehaviorReferenceByConstructor(source, subClassB.getName(), "()V")
181 )); 175 ));
182 176
183 // subClassA constructor 177 // subClassA constructor
184 source = newConstructor(m_subClassA, "(Ljava/lang/String;)V"); 178 source = newConstructor(subClassA, "(Ljava/lang/String;)V");
185 references = m_index.getBehaviorReferences(source); 179 references = index.getBehaviorReferences(source);
186 assertThat(references, containsInAnyOrder( 180 assertThat(references, containsInAnyOrder(
187 newBehaviorReferenceByConstructor(source, m_subClassAA.getName(), "()V") 181 newBehaviorReferenceByConstructor(source, subClassAA.getName(), "()V")
188 )); 182 ));
189 183
190 // baseClass.getName() 184 // baseClass.getName()
191 source = newMethod(m_baseClass, "a", "()Ljava/lang/String;"); 185 source = newMethod(baseClass, "a", "()Ljava/lang/String;");
192 references = m_index.getBehaviorReferences(source); 186 references = index.getBehaviorReferences(source);
193 assertThat(references, containsInAnyOrder( 187 assertThat(references, containsInAnyOrder(
194 newBehaviorReferenceByMethod(source, m_subClassAA.getName(), "a", "()Ljava/lang/String;"), 188 newBehaviorReferenceByMethod(source, subClassAA.getName(), "a", "()Ljava/lang/String;"),
195 newBehaviorReferenceByMethod(source, m_subClassB.getName(), "a", "()V") 189 newBehaviorReferenceByMethod(source, subClassB.getName(), "a", "()V")
196 )); 190 ));
197 191
198 // subclassAA.getName() 192 // subclassAA.getName()
199 source = newMethod(m_subClassAA, "a", "()Ljava/lang/String;"); 193 source = newMethod(subClassAA, "a", "()Ljava/lang/String;");
200 references = m_index.getBehaviorReferences(source); 194 references = index.getBehaviorReferences(source);
201 assertThat(references, containsInAnyOrder( 195 assertThat(references, containsInAnyOrder(
202 newBehaviorReferenceByMethod(source, m_subClassAA.getName(), "a", "()V") 196 newBehaviorReferenceByMethod(source, subClassAA.getName(), "a", "()V")
203 )); 197 ));
204 } 198 }
205 199
@@ -207,33 +201,33 @@ public class TestJarIndexInheritanceTree {
207 public void containsEntries() { 201 public void containsEntries() {
208 202
209 // classes 203 // classes
210 assertThat(m_index.containsObfClass(m_baseClass), is(true)); 204 assertThat(index.containsObfClass(baseClass), is(true));
211 assertThat(m_index.containsObfClass(m_subClassA), is(true)); 205 assertThat(index.containsObfClass(subClassA), is(true));
212 assertThat(m_index.containsObfClass(m_subClassAA), is(true)); 206 assertThat(index.containsObfClass(subClassAA), is(true));
213 assertThat(m_index.containsObfClass(m_subClassB), is(true)); 207 assertThat(index.containsObfClass(subClassB), is(true));
214 208
215 // fields 209 // fields
216 assertThat(m_index.containsObfField(m_nameField), is(true)); 210 assertThat(index.containsObfField(nameField), is(true));
217 assertThat(m_index.containsObfField(m_numThingsField), is(true)); 211 assertThat(index.containsObfField(numThingsField), is(true));
218 212
219 // methods 213 // methods
220 // getName() 214 // getName()
221 assertThat(m_index.containsObfBehavior(newMethod(m_baseClass, "a", "()Ljava/lang/String;")), is(true)); 215 assertThat(index.containsObfBehavior(newMethod(baseClass, "a", "()Ljava/lang/String;")), is(true));
222 assertThat(m_index.containsObfBehavior(newMethod(m_subClassA, "a", "()Ljava/lang/String;")), is(false)); 216 assertThat(index.containsObfBehavior(newMethod(subClassA, "a", "()Ljava/lang/String;")), is(false));
223 assertThat(m_index.containsObfBehavior(newMethod(m_subClassAA, "a", "()Ljava/lang/String;")), is(true)); 217 assertThat(index.containsObfBehavior(newMethod(subClassAA, "a", "()Ljava/lang/String;")), is(true));
224 assertThat(m_index.containsObfBehavior(newMethod(m_subClassB, "a", "()Ljava/lang/String;")), is(false)); 218 assertThat(index.containsObfBehavior(newMethod(subClassB, "a", "()Ljava/lang/String;")), is(false));
225 219
226 // doBaseThings() 220 // doBaseThings()
227 assertThat(m_index.containsObfBehavior(newMethod(m_baseClass, "a", "()V")), is(true)); 221 assertThat(index.containsObfBehavior(newMethod(baseClass, "a", "()V")), is(true));
228 assertThat(m_index.containsObfBehavior(newMethod(m_subClassA, "a", "()V")), is(false)); 222 assertThat(index.containsObfBehavior(newMethod(subClassA, "a", "()V")), is(false));
229 assertThat(m_index.containsObfBehavior(newMethod(m_subClassAA, "a", "()V")), is(true)); 223 assertThat(index.containsObfBehavior(newMethod(subClassAA, "a", "()V")), is(true));
230 assertThat(m_index.containsObfBehavior(newMethod(m_subClassB, "a", "()V")), is(true)); 224 assertThat(index.containsObfBehavior(newMethod(subClassB, "a", "()V")), is(true));
231 225
232 // doBThings() 226 // doBThings()
233 assertThat(m_index.containsObfBehavior(newMethod(m_baseClass, "b", "()V")), is(false)); 227 assertThat(index.containsObfBehavior(newMethod(baseClass, "b", "()V")), is(false));
234 assertThat(m_index.containsObfBehavior(newMethod(m_subClassA, "b", "()V")), is(false)); 228 assertThat(index.containsObfBehavior(newMethod(subClassA, "b", "()V")), is(false));
235 assertThat(m_index.containsObfBehavior(newMethod(m_subClassAA, "b", "()V")), is(false)); 229 assertThat(index.containsObfBehavior(newMethod(subClassAA, "b", "()V")), is(false));
236 assertThat(m_index.containsObfBehavior(newMethod(m_subClassB, "b", "()V")), is(true)); 230 assertThat(index.containsObfBehavior(newMethod(subClassB, "b", "()V")), is(true));
237 231
238 } 232 }
239} 233}