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