summaryrefslogtreecommitdiff
path: root/src/test/java/cuchaz
diff options
context:
space:
mode:
authorGravatar liach2019-05-15 22:03:13 -0700
committerGravatar Gegy2019-05-16 07:03:13 +0200
commitcb8823eb0b446d5c1b9b580e5578866e691771d8 (patch)
tree1e8c1a5b981f3ad42c393f5d7cb75754f25f51ba /src/test/java/cuchaz
parentcheckmappings command (#137) (diff)
downloadenigma-cb8823eb0b446d5c1b9b580e5578866e691771d8.tar.gz
enigma-cb8823eb0b446d5c1b9b580e5578866e691771d8.tar.xz
enigma-cb8823eb0b446d5c1b9b580e5578866e691771d8.zip
Feature/weave (#138)
* Add weave/stitch style command system to enigma Also fixed divide by zero stupidity Signed-off-by: liach <liach@users.noreply.github.com> * Add tests for package access index and command Signed-off-by: liach <liach@users.noreply.github.com> * Minor tweaks Signed-off-by: liach <liach@users.noreply.github.com>
Diffstat (limited to 'src/test/java/cuchaz')
-rw-r--r--src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java55
-rw-r--r--src/test/java/cuchaz/enigma/command/CheckMappingsCommandTest.java20
-rw-r--r--src/test/java/cuchaz/enigma/inputs/packageAccess/Base.java7
-rw-r--r--src/test/java/cuchaz/enigma/inputs/packageAccess/SamePackageChild.java12
-rw-r--r--src/test/java/cuchaz/enigma/inputs/packageAccess/sub/OtherPackageChild.java14
5 files changed, 108 insertions, 0 deletions
diff --git a/src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java b/src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java
new file mode 100644
index 00000000..ae5d6d2c
--- /dev/null
+++ b/src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java
@@ -0,0 +1,55 @@
1/*******************************************************************************
2 * Copyright (c) 2015 Jeff Martin.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the GNU Lesser General Public
5 * License v3.0 which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/lgpl.html
7 *
8 * Contributors:
9 * Jeff Martin - initial API and implementation
10 ******************************************************************************/
11
12package cuchaz.enigma;
13
14import cuchaz.enigma.analysis.ParsedJar;
15import cuchaz.enigma.analysis.index.JarIndex;
16import cuchaz.enigma.analysis.index.PackageVisibilityIndex;
17import cuchaz.enigma.translation.representation.entry.ClassEntry;
18import org.junit.Test;
19
20import java.util.jar.JarFile;
21
22import static cuchaz.enigma.TestEntryFactory.newClass;
23import static org.hamcrest.MatcherAssert.assertThat;
24import static org.hamcrest.Matchers.contains;
25import static org.hamcrest.Matchers.containsInAnyOrder;
26
27public class PackageVisibilityIndexTest {
28
29 private static final ClassEntry KEEP = newClass("cuchaz/enigma/inputs/Keep");
30 private static final ClassEntry BASE = newClass("a");
31 private static final ClassEntry SAME_PACKAGE_CHILD = newClass("b");
32 private static final ClassEntry SAME_PACKAGE_CHILD_INNER = newClass("b$a");
33 private static final ClassEntry OTHER_PACKAGE_CHILD = newClass("c");
34 private static final ClassEntry OTHER_PACKAGE_CHILD_INNER = newClass("c$a");
35 private final JarIndex jarIndex;
36
37 public PackageVisibilityIndexTest() throws Exception {
38 jarIndex = JarIndex.empty();
39 ParsedJar jar = new ParsedJar(new JarFile("build/test-obf/packageAccess.jar"));
40 jarIndex.indexJar(jar, s -> {
41 });
42 }
43
44 @Test
45 public void test() {
46 PackageVisibilityIndex visibilityIndex = jarIndex.getPackageVisibilityIndex();
47 assertThat(visibilityIndex.getPartition(BASE), containsInAnyOrder(BASE, SAME_PACKAGE_CHILD, SAME_PACKAGE_CHILD_INNER));
48 System.out.println(visibilityIndex.getPartitions());
49 assertThat(visibilityIndex.getPartitions(), containsInAnyOrder(
50 containsInAnyOrder(BASE, SAME_PACKAGE_CHILD, SAME_PACKAGE_CHILD_INNER),
51 containsInAnyOrder(OTHER_PACKAGE_CHILD, OTHER_PACKAGE_CHILD_INNER),
52 contains(KEEP)
53 ));
54 }
55}
diff --git a/src/test/java/cuchaz/enigma/command/CheckMappingsCommandTest.java b/src/test/java/cuchaz/enigma/command/CheckMappingsCommandTest.java
new file mode 100644
index 00000000..f3b9f85e
--- /dev/null
+++ b/src/test/java/cuchaz/enigma/command/CheckMappingsCommandTest.java
@@ -0,0 +1,20 @@
1package cuchaz.enigma.command;
2
3import org.junit.Test;
4
5import java.io.File;
6
7public class CheckMappingsCommandTest {
8
9 @Test(expected = IllegalStateException.class)
10 public void testWrong() throws Exception {
11 new CheckMappingsCommand().run(new File("build/test-obf/packageAccess.jar").getAbsolutePath(), new File("src/test/resources" +
12 "/packageAccess/wrongMappings").getAbsolutePath());
13 }
14
15 @Test
16 public void testRight() throws Exception {
17 new CheckMappingsCommand().run(new File("build/test-obf/packageAccess.jar").getAbsolutePath(), new File("src/test/resources" +
18 "/packageAccess/correctMappings").getAbsolutePath());
19 }
20}
diff --git a/src/test/java/cuchaz/enigma/inputs/packageAccess/Base.java b/src/test/java/cuchaz/enigma/inputs/packageAccess/Base.java
new file mode 100644
index 00000000..6f5fe304
--- /dev/null
+++ b/src/test/java/cuchaz/enigma/inputs/packageAccess/Base.java
@@ -0,0 +1,7 @@
1package cuchaz.enigma.inputs.packageAccess;
2
3public class Base {
4 protected int make() {
5 return 42;
6 }
7}
diff --git a/src/test/java/cuchaz/enigma/inputs/packageAccess/SamePackageChild.java b/src/test/java/cuchaz/enigma/inputs/packageAccess/SamePackageChild.java
new file mode 100644
index 00000000..cf0f6574
--- /dev/null
+++ b/src/test/java/cuchaz/enigma/inputs/packageAccess/SamePackageChild.java
@@ -0,0 +1,12 @@
1package cuchaz.enigma.inputs.packageAccess;
2
3public class SamePackageChild extends Base {
4
5 class Inner {
6 final int value;
7
8 Inner() {
9 value = SamePackageChild.this.make(); // no synthetic method
10 }
11 }
12}
diff --git a/src/test/java/cuchaz/enigma/inputs/packageAccess/sub/OtherPackageChild.java b/src/test/java/cuchaz/enigma/inputs/packageAccess/sub/OtherPackageChild.java
new file mode 100644
index 00000000..19fb19c2
--- /dev/null
+++ b/src/test/java/cuchaz/enigma/inputs/packageAccess/sub/OtherPackageChild.java
@@ -0,0 +1,14 @@
1package cuchaz.enigma.inputs.packageAccess.sub;
2
3import cuchaz.enigma.inputs.packageAccess.Base;
4
5public class OtherPackageChild extends Base {
6
7 class Inner {
8 final int value;
9
10 Inner() {
11 value = OtherPackageChild.this.make(); // synthetic method call
12 }
13 }
14}