summaryrefslogtreecommitdiff
path: root/src/test/java/cuchaz/enigma/TestInnerClasses.java
diff options
context:
space:
mode:
authorGravatar Gegy2019-01-24 14:48:32 +0200
committerGravatar Adrian Siekierka2019-01-24 13:48:32 +0100
commit00fcd0550fcdda621c2e4662f6ddd55ce673b931 (patch)
tree6f9e4c24dbcc6d118fceec56adf7bf9d747a485c /src/test/java/cuchaz/enigma/TestInnerClasses.java
parentmark as 0.13.0-SNAPSHOT for preliminary development (diff)
downloadenigma-fork-00fcd0550fcdda621c2e4662f6ddd55ce673b931.tar.gz
enigma-fork-00fcd0550fcdda621c2e4662f6ddd55ce673b931.tar.xz
enigma-fork-00fcd0550fcdda621c2e4662f6ddd55ce673b931.zip
[WIP] Mapping rework (#91)
* Move packages * Mapping & entry refactor: first pass * Fix deobf -> obf tree remapping * Resolve various issues * Give all entries the potential for parents and treat inner classes as children * Deobf UI tree elements * Tests pass * Sort mapping output * Fix delta tracking * Index separation and first pass for #97 * Keep track of remapped jar index * Fix child entries not being remapped * Drop non-root entries * Track dropped mappings * Fix enigma mapping ordering * EntryTreeNode interface * Small tweaks * Naive full index remap on rename * Entries can resolve to more than one root entry * Support alternative resolution strategies * Bridge method resolution * Tests pass * Fix mappings being used where there are none * Fix methods with different descriptors being considered unique. closes #89
Diffstat (limited to 'src/test/java/cuchaz/enigma/TestInnerClasses.java')
-rw-r--r--src/test/java/cuchaz/enigma/TestInnerClasses.java44
1 files changed, 14 insertions, 30 deletions
diff --git a/src/test/java/cuchaz/enigma/TestInnerClasses.java b/src/test/java/cuchaz/enigma/TestInnerClasses.java
index 843a63c..0319cf6 100644
--- a/src/test/java/cuchaz/enigma/TestInnerClasses.java
+++ b/src/test/java/cuchaz/enigma/TestInnerClasses.java
@@ -11,20 +11,16 @@
11 11
12package cuchaz.enigma; 12package cuchaz.enigma;
13 13
14import cuchaz.enigma.analysis.JarIndex;
15import cuchaz.enigma.analysis.ParsedJar; 14import cuchaz.enigma.analysis.ParsedJar;
16import cuchaz.enigma.mapping.entry.ClassEntry; 15import cuchaz.enigma.analysis.index.JarIndex;
17import cuchaz.enigma.mapping.entry.ReferencedEntryPool; 16import cuchaz.enigma.translation.representation.entry.ClassEntry;
18import org.junit.Test; 17import org.junit.Test;
19 18
20import java.util.jar.JarFile; 19import java.util.jar.JarFile;
21 20
22import static cuchaz.enigma.TestEntryFactory.newClass; 21import static cuchaz.enigma.TestEntryFactory.newClass;
23import static org.hamcrest.MatcherAssert.assertThat; 22import static org.hamcrest.MatcherAssert.assertThat;
24import static org.hamcrest.Matchers.containsInAnyOrder;
25import static org.hamcrest.Matchers.empty;
26import static org.hamcrest.Matchers.is; 23import static org.hamcrest.Matchers.is;
27import static org.hamcrest.Matchers.nullValue;
28 24
29public class TestInnerClasses { 25public class TestInnerClasses {
30 26
@@ -41,23 +37,19 @@ public class TestInnerClasses {
41 37
42 public TestInnerClasses() 38 public TestInnerClasses()
43 throws Exception { 39 throws Exception {
44 index = new JarIndex(new ReferencedEntryPool()); 40 index = JarIndex.empty();
45 ParsedJar jar = new ParsedJar(new JarFile("build/test-obf/innerClasses.jar")); 41 ParsedJar jar = new ParsedJar(new JarFile("build/test-obf/innerClasses.jar"));
46 index.indexJar(jar, true); 42 index.indexJar(jar, s -> {});
47 deobfuscator = new Deobfuscator(jar); 43 deobfuscator = new Deobfuscator(jar);
48 } 44 }
49 45
50 @Test 46 @Test
51 public void simple() { 47 public void simple() {
52 assertThat(index.getOuterClass(SimpleInner), is(SimpleOuter));
53 assertThat(index.getInnerClasses(SimpleOuter), containsInAnyOrder(SimpleInner));
54 decompile(SimpleOuter); 48 decompile(SimpleOuter);
55 } 49 }
56 50
57 @Test 51 @Test
58 public void constructorArgs() { 52 public void constructorArgs() {
59 assertThat(index.getOuterClass(ConstructorArgsInner), is(ConstructorArgsOuter));
60 assertThat(index.getInnerClasses(ConstructorArgsOuter), containsInAnyOrder(ConstructorArgsInner));
61 decompile(ConstructorArgsOuter); 53 decompile(ConstructorArgsOuter);
62 } 54 }
63 55
@@ -65,33 +57,25 @@ public class TestInnerClasses {
65 public void classTree() { 57 public void classTree() {
66 58
67 // root level 59 // root level
68 assertThat(index.containsObfClass(ClassTreeRoot), is(true)); 60 assertThat(index.getEntryIndex().hasClass(ClassTreeRoot), is(true));
69 assertThat(index.getOuterClass(ClassTreeRoot), is(nullValue()));
70 assertThat(index.getInnerClasses(ClassTreeRoot), containsInAnyOrder(ClassTreeLevel1));
71 61
72 // level 1 62 // level 1
73 ClassEntry fullClassEntry = new ClassEntry(ClassTreeRoot.getName() 63 ClassEntry fullClassEntry = new ClassEntry(ClassTreeRoot.getName()
74 + "$" + ClassTreeLevel1.getInnermostClassName()); 64 + "$" + ClassTreeLevel1.getSimpleName());
75 assertThat(index.containsObfClass(fullClassEntry), is(true)); 65 assertThat(index.getEntryIndex().hasClass(fullClassEntry), is(true));
76 assertThat(index.getOuterClass(ClassTreeLevel1), is(ClassTreeRoot));
77 assertThat(index.getInnerClasses(ClassTreeLevel1), containsInAnyOrder(ClassTreeLevel2));
78 66
79 // level 2 67 // level 2
80 fullClassEntry = new ClassEntry(ClassTreeRoot.getName() 68 fullClassEntry = new ClassEntry(ClassTreeRoot.getName()
81 + "$" + ClassTreeLevel1.getInnermostClassName() 69 + "$" + ClassTreeLevel1.getSimpleName()
82 + "$" + ClassTreeLevel2.getInnermostClassName()); 70 + "$" + ClassTreeLevel2.getSimpleName());
83 assertThat(index.containsObfClass(fullClassEntry), is(true)); 71 assertThat(index.getEntryIndex().hasClass(fullClassEntry), is(true));
84 assertThat(index.getOuterClass(ClassTreeLevel2), is(ClassTreeLevel1));
85 assertThat(index.getInnerClasses(ClassTreeLevel2), containsInAnyOrder(ClassTreeLevel3));
86 72
87 // level 3 73 // level 3
88 fullClassEntry = new ClassEntry(ClassTreeRoot.getName() 74 fullClassEntry = new ClassEntry(ClassTreeRoot.getName()
89 + "$" + ClassTreeLevel1.getInnermostClassName() 75 + "$" + ClassTreeLevel1.getSimpleName()
90 + "$" + ClassTreeLevel2.getInnermostClassName() 76 + "$" + ClassTreeLevel2.getSimpleName()
91 + "$" + ClassTreeLevel3.getInnermostClassName()); 77 + "$" + ClassTreeLevel3.getSimpleName());
92 assertThat(index.containsObfClass(fullClassEntry), is(true)); 78 assertThat(index.getEntryIndex().hasClass(fullClassEntry), is(true));
93 assertThat(index.getOuterClass(ClassTreeLevel3), is(ClassTreeLevel2));
94 assertThat(index.getInnerClasses(ClassTreeLevel3), is(empty()));
95 } 79 }
96 80
97 private void decompile(ClassEntry classEntry) { 81 private void decompile(ClassEntry classEntry) {