diff options
| author | 2018-05-19 17:02:46 +0200 | |
|---|---|---|
| committer | 2018-05-19 17:02:46 +0200 | |
| commit | 2b2249e873c4adfd2dd6e8f1f2489ccd9f6aa021 (patch) | |
| tree | 14c8b1e806449ace1641a1dbafae162855f79670 /src/test/java/cuchaz/enigma/TestInnerClasses.java | |
| parent | Fix build (diff) | |
| download | enigma-fork-2b2249e873c4adfd2dd6e8f1f2489ccd9f6aa021.tar.gz enigma-fork-2b2249e873c4adfd2dd6e8f1f2489ccd9f6aa021.tar.xz enigma-fork-2b2249e873c4adfd2dd6e8f1f2489ccd9f6aa021.zip | |
Initial port to ASM
Diffstat (limited to 'src/test/java/cuchaz/enigma/TestInnerClasses.java')
| -rw-r--r-- | src/test/java/cuchaz/enigma/TestInnerClasses.java | 47 |
1 files changed, 7 insertions, 40 deletions
diff --git a/src/test/java/cuchaz/enigma/TestInnerClasses.java b/src/test/java/cuchaz/enigma/TestInnerClasses.java index 38db0df..30e127e 100644 --- a/src/test/java/cuchaz/enigma/TestInnerClasses.java +++ b/src/test/java/cuchaz/enigma/TestInnerClasses.java | |||
| @@ -12,7 +12,9 @@ | |||
| 12 | package cuchaz.enigma; | 12 | package cuchaz.enigma; |
| 13 | 13 | ||
| 14 | import cuchaz.enigma.analysis.JarIndex; | 14 | import cuchaz.enigma.analysis.JarIndex; |
| 15 | import cuchaz.enigma.analysis.ParsedJar; | ||
| 15 | import cuchaz.enigma.mapping.ClassEntry; | 16 | import cuchaz.enigma.mapping.ClassEntry; |
| 17 | import cuchaz.enigma.mapping.ReferencedEntryPool; | ||
| 16 | import org.junit.Test; | 18 | import org.junit.Test; |
| 17 | 19 | ||
| 18 | import java.util.jar.JarFile; | 20 | import java.util.jar.JarFile; |
| @@ -26,16 +28,10 @@ import static org.hamcrest.Matchers.nullValue; | |||
| 26 | 28 | ||
| 27 | public class TestInnerClasses { | 29 | public class TestInnerClasses { |
| 28 | 30 | ||
| 29 | private static final ClassEntry AnonymousOuter = newClass("a"); | ||
| 30 | private static final ClassEntry AnonymousInner = newClass("a$1"); | ||
| 31 | private static final ClassEntry SimpleOuter = newClass("d"); | 31 | private static final ClassEntry SimpleOuter = newClass("d"); |
| 32 | private static final ClassEntry SimpleInner = newClass("d$a"); | 32 | private static final ClassEntry SimpleInner = newClass("d$a"); |
| 33 | private static final ClassEntry ConstructorArgsOuter = newClass("c"); | 33 | private static final ClassEntry ConstructorArgsOuter = newClass("c"); |
| 34 | private static final ClassEntry ConstructorArgsInner = newClass("c$a"); | 34 | private static final ClassEntry ConstructorArgsInner = newClass("c$a"); |
| 35 | private static final ClassEntry AnonymousWithScopeArgsOuter = newClass("b"); | ||
| 36 | private static final ClassEntry AnonymousWithScopeArgsInner = newClass("b$1"); | ||
| 37 | private static final ClassEntry AnonymousWithOuterAccessOuter = newClass("e"); | ||
| 38 | private static final ClassEntry AnonymousWithOuterAccessInner = newClass("e$1"); | ||
| 39 | private static final ClassEntry ClassTreeRoot = newClass("f"); | 35 | private static final ClassEntry ClassTreeRoot = newClass("f"); |
| 40 | private static final ClassEntry ClassTreeLevel1 = newClass("f$a"); | 36 | private static final ClassEntry ClassTreeLevel1 = newClass("f$a"); |
| 41 | private static final ClassEntry ClassTreeLevel2 = newClass("f$a$a"); | 37 | private static final ClassEntry ClassTreeLevel2 = newClass("f$a$a"); |
| @@ -45,9 +41,9 @@ public class TestInnerClasses { | |||
| 45 | 41 | ||
| 46 | public TestInnerClasses() | 42 | public TestInnerClasses() |
| 47 | throws Exception { | 43 | throws Exception { |
| 48 | index = new JarIndex(); | 44 | index = new JarIndex(new ReferencedEntryPool()); |
| 49 | JarFile jar = new JarFile("build/test-obf/innerClasses.jar"); | 45 | JarFile jar = new JarFile("build/test-obf/innerClasses.jar"); |
| 50 | index.indexJar(jar, true); | 46 | index.indexJar(new ParsedJar(jar), true); |
| 51 | deobfuscator = new Deobfuscator(jar); | 47 | deobfuscator = new Deobfuscator(jar); |
| 52 | } | 48 | } |
| 53 | 49 | ||
| @@ -55,43 +51,17 @@ public class TestInnerClasses { | |||
| 55 | public void simple() { | 51 | public void simple() { |
| 56 | assertThat(index.getOuterClass(SimpleInner), is(SimpleOuter)); | 52 | assertThat(index.getOuterClass(SimpleInner), is(SimpleOuter)); |
| 57 | assertThat(index.getInnerClasses(SimpleOuter), containsInAnyOrder(SimpleInner)); | 53 | assertThat(index.getInnerClasses(SimpleOuter), containsInAnyOrder(SimpleInner)); |
| 58 | assertThat(index.isAnonymousClass(SimpleInner), is(false)); | ||
| 59 | decompile(SimpleOuter); | 54 | decompile(SimpleOuter); |
| 60 | } | 55 | } |
| 61 | 56 | ||
| 62 | @Test | 57 | @Test |
| 63 | public void anonymous() { | ||
| 64 | assertThat(index.getOuterClass(AnonymousInner), is(AnonymousOuter)); | ||
| 65 | assertThat(index.getInnerClasses(AnonymousOuter), containsInAnyOrder(AnonymousInner)); | ||
| 66 | assertThat(index.isAnonymousClass(AnonymousInner), is(true)); | ||
| 67 | decompile(AnonymousOuter); | ||
| 68 | } | ||
| 69 | |||
| 70 | @Test | ||
| 71 | public void constructorArgs() { | 58 | public void constructorArgs() { |
| 72 | assertThat(index.getOuterClass(ConstructorArgsInner), is(ConstructorArgsOuter)); | 59 | assertThat(index.getOuterClass(ConstructorArgsInner), is(ConstructorArgsOuter)); |
| 73 | assertThat(index.getInnerClasses(ConstructorArgsOuter), containsInAnyOrder(ConstructorArgsInner)); | 60 | assertThat(index.getInnerClasses(ConstructorArgsOuter), containsInAnyOrder(ConstructorArgsInner)); |
| 74 | assertThat(index.isAnonymousClass(ConstructorArgsInner), is(false)); | ||
| 75 | decompile(ConstructorArgsOuter); | 61 | decompile(ConstructorArgsOuter); |
| 76 | } | 62 | } |
| 77 | 63 | ||
| 78 | @Test | 64 | @Test |
| 79 | public void anonymousWithScopeArgs() { | ||
| 80 | assertThat(index.getOuterClass(AnonymousWithScopeArgsInner), is(AnonymousWithScopeArgsOuter)); | ||
| 81 | assertThat(index.getInnerClasses(AnonymousWithScopeArgsOuter), containsInAnyOrder(AnonymousWithScopeArgsInner)); | ||
| 82 | assertThat(index.isAnonymousClass(AnonymousWithScopeArgsInner), is(true)); | ||
| 83 | decompile(AnonymousWithScopeArgsOuter); | ||
| 84 | } | ||
| 85 | |||
| 86 | @Test | ||
| 87 | public void anonymousWithOuterAccess() { | ||
| 88 | assertThat(index.getOuterClass(AnonymousWithOuterAccessInner), is(AnonymousWithOuterAccessOuter)); | ||
| 89 | assertThat(index.getInnerClasses(AnonymousWithOuterAccessOuter), containsInAnyOrder(AnonymousWithOuterAccessInner)); | ||
| 90 | assertThat(index.isAnonymousClass(AnonymousWithOuterAccessInner), is(true)); | ||
| 91 | decompile(AnonymousWithOuterAccessOuter); | ||
| 92 | } | ||
| 93 | |||
| 94 | @Test | ||
| 95 | public void classTree() { | 65 | public void classTree() { |
| 96 | 66 | ||
| 97 | // root level | 67 | // root level |
| @@ -101,8 +71,7 @@ public class TestInnerClasses { | |||
| 101 | 71 | ||
| 102 | // level 1 | 72 | // level 1 |
| 103 | ClassEntry fullClassEntry = new ClassEntry(ClassTreeRoot.getName() | 73 | ClassEntry fullClassEntry = new ClassEntry(ClassTreeRoot.getName() |
| 104 | + "$" + ClassTreeLevel1.getInnermostClassName() | 74 | + "$" + ClassTreeLevel1.getInnermostClassName()); |
| 105 | ); | ||
| 106 | assertThat(index.containsObfClass(fullClassEntry), is(true)); | 75 | assertThat(index.containsObfClass(fullClassEntry), is(true)); |
| 107 | assertThat(index.getOuterClass(ClassTreeLevel1), is(ClassTreeRoot)); | 76 | assertThat(index.getOuterClass(ClassTreeLevel1), is(ClassTreeRoot)); |
| 108 | assertThat(index.getInnerClasses(ClassTreeLevel1), containsInAnyOrder(ClassTreeLevel2)); | 77 | assertThat(index.getInnerClasses(ClassTreeLevel1), containsInAnyOrder(ClassTreeLevel2)); |
| @@ -110,8 +79,7 @@ public class TestInnerClasses { | |||
| 110 | // level 2 | 79 | // level 2 |
| 111 | fullClassEntry = new ClassEntry(ClassTreeRoot.getName() | 80 | fullClassEntry = new ClassEntry(ClassTreeRoot.getName() |
| 112 | + "$" + ClassTreeLevel1.getInnermostClassName() | 81 | + "$" + ClassTreeLevel1.getInnermostClassName() |
| 113 | + "$" + ClassTreeLevel2.getInnermostClassName() | 82 | + "$" + ClassTreeLevel2.getInnermostClassName()); |
| 114 | ); | ||
| 115 | assertThat(index.containsObfClass(fullClassEntry), is(true)); | 83 | assertThat(index.containsObfClass(fullClassEntry), is(true)); |
| 116 | assertThat(index.getOuterClass(ClassTreeLevel2), is(ClassTreeLevel1)); | 84 | assertThat(index.getOuterClass(ClassTreeLevel2), is(ClassTreeLevel1)); |
| 117 | assertThat(index.getInnerClasses(ClassTreeLevel2), containsInAnyOrder(ClassTreeLevel3)); | 85 | assertThat(index.getInnerClasses(ClassTreeLevel2), containsInAnyOrder(ClassTreeLevel3)); |
| @@ -120,8 +88,7 @@ public class TestInnerClasses { | |||
| 120 | fullClassEntry = new ClassEntry(ClassTreeRoot.getName() | 88 | fullClassEntry = new ClassEntry(ClassTreeRoot.getName() |
| 121 | + "$" + ClassTreeLevel1.getInnermostClassName() | 89 | + "$" + ClassTreeLevel1.getInnermostClassName() |
| 122 | + "$" + ClassTreeLevel2.getInnermostClassName() | 90 | + "$" + ClassTreeLevel2.getInnermostClassName() |
| 123 | + "$" + ClassTreeLevel3.getInnermostClassName() | 91 | + "$" + ClassTreeLevel3.getInnermostClassName()); |
| 124 | ); | ||
| 125 | assertThat(index.containsObfClass(fullClassEntry), is(true)); | 92 | assertThat(index.containsObfClass(fullClassEntry), is(true)); |
| 126 | assertThat(index.getOuterClass(ClassTreeLevel3), is(ClassTreeLevel2)); | 93 | assertThat(index.getOuterClass(ClassTreeLevel3), is(ClassTreeLevel2)); |
| 127 | assertThat(index.getInnerClasses(ClassTreeLevel3), is(empty())); | 94 | assertThat(index.getInnerClasses(ClassTreeLevel3), is(empty())); |