summaryrefslogtreecommitdiff
path: root/test/cuchaz/enigma/TestInnerClasses.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/cuchaz/enigma/TestInnerClasses.java')
-rw-r--r--test/cuchaz/enigma/TestInnerClasses.java90
1 files changed, 90 insertions, 0 deletions
diff --git a/test/cuchaz/enigma/TestInnerClasses.java b/test/cuchaz/enigma/TestInnerClasses.java
new file mode 100644
index 0000000..2e16a33
--- /dev/null
+++ b/test/cuchaz/enigma/TestInnerClasses.java
@@ -0,0 +1,90 @@
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 org.hamcrest.MatcherAssert.*;
15import static org.hamcrest.Matchers.*;
16
17import java.util.jar.JarFile;
18
19import org.junit.Test;
20
21import cuchaz.enigma.analysis.JarIndex;
22
23public class TestInnerClasses {
24
25 private JarIndex m_index;
26 private Deobfuscator m_deobfuscator;
27
28 private static final String AnonymousOuter = "none/a";
29 private static final String AnonymousInner = "b";
30 private static final String SimpleOuter = "none/g";
31 private static final String SimpleInner = "h";
32 private static final String ConstructorArgsOuter = "none/e";
33 private static final String ConstructorArgsInner = "f";
34 private static final String AnonymousWithScopeArgsOuter = "none/c";
35 private static final String AnonymousWithScopeArgsInner = "d";
36 private static final String AnonymousWithOuterAccessOuter = "none/i";
37 private static final String AnonymousWithOuterAccessInner = "j";
38
39 public TestInnerClasses()
40 throws Exception {
41 m_index = new JarIndex();
42 JarFile jar = new JarFile("build/testInnerClasses.obf.jar");
43 m_index.indexJar(jar, true);
44 m_deobfuscator = new Deobfuscator(jar);
45 }
46
47 @Test
48 public void simple() {
49 assertThat(m_index.getOuterClass(SimpleInner), is(SimpleOuter));
50 assertThat(m_index.getInnerClasses(SimpleOuter), containsInAnyOrder(SimpleInner));
51 assertThat(m_index.isAnonymousClass(SimpleInner), is(false));
52 decompile(SimpleOuter);
53 }
54
55 @Test
56 public void anonymous() {
57 assertThat(m_index.getOuterClass(AnonymousInner), is(AnonymousOuter));
58 assertThat(m_index.getInnerClasses(AnonymousOuter), containsInAnyOrder(AnonymousInner));
59 assertThat(m_index.isAnonymousClass(AnonymousInner), is(true));
60 decompile(AnonymousOuter);
61 }
62
63 @Test
64 public void constructorArgs() {
65 assertThat(m_index.getOuterClass(ConstructorArgsInner), is(ConstructorArgsOuter));
66 assertThat(m_index.getInnerClasses(ConstructorArgsOuter), containsInAnyOrder(ConstructorArgsInner));
67 assertThat(m_index.isAnonymousClass(ConstructorArgsInner), is(false));
68 decompile(ConstructorArgsOuter);
69 }
70
71 @Test
72 public void anonymousWithScopeArgs() {
73 assertThat(m_index.getOuterClass(AnonymousWithScopeArgsInner), is(AnonymousWithScopeArgsOuter));
74 assertThat(m_index.getInnerClasses(AnonymousWithScopeArgsOuter), containsInAnyOrder(AnonymousWithScopeArgsInner));
75 assertThat(m_index.isAnonymousClass(AnonymousWithScopeArgsInner), is(true));
76 decompile(AnonymousWithScopeArgsOuter);
77 }
78
79 @Test
80 public void anonymousWithOuterAccess() {
81 assertThat(m_index.getOuterClass(AnonymousWithOuterAccessInner), is(AnonymousWithOuterAccessOuter));
82 assertThat(m_index.getInnerClasses(AnonymousWithOuterAccessOuter), containsInAnyOrder(AnonymousWithOuterAccessInner));
83 assertThat(m_index.isAnonymousClass(AnonymousWithOuterAccessInner), is(true));
84 decompile(AnonymousWithOuterAccessOuter);
85 }
86
87 private void decompile(String name) {
88 m_deobfuscator.getSourceTree(name);
89 }
90}