summaryrefslogtreecommitdiff
path: root/test/cuchaz/enigma/TestJarIndexLoneClass.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/cuchaz/enigma/TestJarIndexLoneClass.java')
-rw-r--r--test/cuchaz/enigma/TestJarIndexLoneClass.java169
1 files changed, 169 insertions, 0 deletions
diff --git a/test/cuchaz/enigma/TestJarIndexLoneClass.java b/test/cuchaz/enigma/TestJarIndexLoneClass.java
new file mode 100644
index 0000000..a061b72
--- /dev/null
+++ b/test/cuchaz/enigma/TestJarIndexLoneClass.java
@@ -0,0 +1,169 @@
1/*******************************************************************************
2 * Copyright (c) 2014 Jeff Martin.
3 *
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the GNU Public License v3.0
6 * which accompanies this distribution, and is available at
7 * http://www.gnu.org/licenses/gpl.html
8 *
9 * Contributors:
10 * Jeff Martin - initial API and implementation
11 ******************************************************************************/
12package cuchaz.enigma;
13
14import static cuchaz.enigma.EntryFactory.*;
15import static org.hamcrest.MatcherAssert.*;
16import static org.hamcrest.Matchers.*;
17
18import java.util.Collection;
19import java.util.Set;
20import java.util.jar.JarFile;
21
22import org.junit.Test;
23
24import cuchaz.enigma.analysis.Access;
25import cuchaz.enigma.analysis.ClassImplementationsTreeNode;
26import cuchaz.enigma.analysis.ClassInheritanceTreeNode;
27import cuchaz.enigma.analysis.EntryReference;
28import cuchaz.enigma.analysis.JarIndex;
29import cuchaz.enigma.analysis.MethodImplementationsTreeNode;
30import cuchaz.enigma.analysis.MethodInheritanceTreeNode;
31import cuchaz.enigma.mapping.BehaviorEntry;
32import cuchaz.enigma.mapping.ClassEntry;
33import cuchaz.enigma.mapping.FieldEntry;
34import cuchaz.enigma.mapping.MethodEntry;
35import cuchaz.enigma.mapping.Translator;
36
37public class TestJarIndexLoneClass {
38
39 private JarIndex m_index;
40
41 public TestJarIndexLoneClass() throws Exception {
42 m_index = new JarIndex();
43 m_index.indexJar(new JarFile("build/testLoneClass.obf.jar"), false);
44 }
45
46 @Test
47 public void obfEntries() {
48 assertThat(m_index.getObfClassEntries(), containsInAnyOrder(
49 newClass("cuchaz/enigma/inputs/Keep"),
50 newClass("none/a")
51 ));
52 }
53
54 @Test
55 public void translationIndex() {
56 assertThat(m_index.getTranslationIndex().getSuperclass(new ClassEntry("none/a")), is(nullValue()));
57 assertThat(m_index.getTranslationIndex().getSuperclass(new ClassEntry("cuchaz/enigma/inputs/Keep")), is(nullValue()));
58 assertThat(m_index.getTranslationIndex().getAncestry(new ClassEntry("none/a")), is(empty()));
59 assertThat(m_index.getTranslationIndex().getAncestry(new ClassEntry("cuchaz/enigma/inputs/Keep")), is(empty()));
60 assertThat(m_index.getTranslationIndex().getSubclass(new ClassEntry("none/a")), is(empty()));
61 assertThat(m_index.getTranslationIndex().getSubclass(new ClassEntry("cuchaz/enigma/inputs/Keep")), is(empty()));
62 }
63
64 @Test
65 public void access() {
66 assertThat(m_index.getAccess(newField("none/a", "a")), is(Access.Private));
67 assertThat(m_index.getAccess(newMethod("none/a", "a", "()Ljava/lang/String;")), is(Access.Public));
68 assertThat(m_index.getAccess(newField("none/a", "b")), is(nullValue()));
69 }
70
71 @Test
72 public void classInheritance() {
73 ClassInheritanceTreeNode node = m_index.getClassInheritance(new Translator(), newClass("none/a"));
74 assertThat(node, is(not(nullValue())));
75 assertThat(node.getObfClassName(), is("none/a"));
76 assertThat(node.getChildCount(), is(0));
77 }
78
79 @Test
80 public void methodInheritance() {
81 MethodEntry source = newMethod("none/a", "a", "()Ljava/lang/String;");
82 MethodInheritanceTreeNode node = m_index.getMethodInheritance(new Translator(), source);
83 assertThat(node, is(not(nullValue())));
84 assertThat(node.getMethodEntry(), is(source));
85 assertThat(node.getChildCount(), is(0));
86 }
87
88 @Test
89 public void classImplementations() {
90 ClassImplementationsTreeNode node = m_index.getClassImplementations(new Translator(), newClass("none/a"));
91 assertThat(node, is(nullValue()));
92 }
93
94 @Test
95 public void methodImplementations() {
96 MethodEntry source = newMethod("none/a", "a", "()Ljava/lang/String;");
97 MethodImplementationsTreeNode node = m_index.getMethodImplementations(new Translator(), source);
98 assertThat(node, is(nullValue()));
99 }
100
101 @Test
102 public void relatedMethodImplementations() {
103 Set<MethodEntry> entries = m_index.getRelatedMethodImplementations(newMethod("none/a", "a", "()Ljava/lang/String;"));
104 assertThat(entries, containsInAnyOrder(
105 newMethod("none/a", "a", "()Ljava/lang/String;")
106 ));
107 }
108
109 @Test
110 @SuppressWarnings("unchecked")
111 public void fieldReferences() {
112 FieldEntry source = newField("none/a", "a");
113 Collection<EntryReference<FieldEntry,BehaviorEntry>> references = m_index.getFieldReferences(source);
114 assertThat(references, containsInAnyOrder(
115 newFieldReferenceByConstructor(source, "none/a", "(Ljava/lang/String;)V"),
116 newFieldReferenceByMethod(source, "none/a", "a", "()Ljava/lang/String;")
117 ));
118 }
119
120 @Test
121 public void behaviorReferences() {
122 assertThat(m_index.getBehaviorReferences(newMethod("none/a", "a", "()Ljava/lang/String;")), is(empty()));
123 }
124
125 @Test
126 public void innerClasses() {
127 assertThat(m_index.getInnerClasses("none/a"), is(empty()));
128 }
129
130 @Test
131 public void outerClass() {
132 assertThat(m_index.getOuterClass("a"), is(nullValue()));
133 }
134
135 @Test
136 public void isAnonymousClass() {
137 assertThat(m_index.isAnonymousClass("none/a"), is(false));
138 }
139
140 @Test
141 public void interfaces() {
142 assertThat(m_index.getInterfaces("none/a"), is(empty()));
143 }
144
145 @Test
146 public void implementingClasses() {
147 assertThat(m_index.getImplementingClasses("none/a"), is(empty()));
148 }
149
150 @Test
151 public void isInterface() {
152 assertThat(m_index.isInterface("none/a"), is(false));
153 }
154
155 @Test
156 public void bridgeMethods() {
157 assertThat(m_index.getBridgeMethod(newMethod("none/a", "a", "()Ljava/lang/String;")), is(nullValue()));
158 }
159
160 @Test
161 public void contains() {
162 assertThat(m_index.containsObfClass(newClass("none/a")), is(true));
163 assertThat(m_index.containsObfClass(newClass("none/b")), is(false));
164 assertThat(m_index.containsObfField(newField("none/a", "a")), is(true));
165 assertThat(m_index.containsObfField(newField("none/a", "b")), is(false));
166 assertThat(m_index.containsObfBehavior(newMethod("none/a", "a", "()Ljava/lang/String;")), is(true));
167 assertThat(m_index.containsObfBehavior(newMethod("none/a", "b", "()Ljava/lang/String;")), is(false));
168 }
169}