diff options
| author | 2019-05-15 22:03:13 -0700 | |
|---|---|---|
| committer | 2019-05-16 07:03:13 +0200 | |
| commit | cb8823eb0b446d5c1b9b580e5578866e691771d8 (patch) | |
| tree | 1e8c1a5b981f3ad42c393f5d7cb75754f25f51ba /src/test | |
| parent | checkmappings command (#137) (diff) | |
| download | enigma-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')
11 files changed, 114 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 | |||
| 12 | package cuchaz.enigma; | ||
| 13 | |||
| 14 | import cuchaz.enigma.analysis.ParsedJar; | ||
| 15 | import cuchaz.enigma.analysis.index.JarIndex; | ||
| 16 | import cuchaz.enigma.analysis.index.PackageVisibilityIndex; | ||
| 17 | import cuchaz.enigma.translation.representation.entry.ClassEntry; | ||
| 18 | import org.junit.Test; | ||
| 19 | |||
| 20 | import java.util.jar.JarFile; | ||
| 21 | |||
| 22 | import static cuchaz.enigma.TestEntryFactory.newClass; | ||
| 23 | import static org.hamcrest.MatcherAssert.assertThat; | ||
| 24 | import static org.hamcrest.Matchers.contains; | ||
| 25 | import static org.hamcrest.Matchers.containsInAnyOrder; | ||
| 26 | |||
| 27 | public 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 @@ | |||
| 1 | package cuchaz.enigma.command; | ||
| 2 | |||
| 3 | import org.junit.Test; | ||
| 4 | |||
| 5 | import java.io.File; | ||
| 6 | |||
| 7 | public 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 @@ | |||
| 1 | package cuchaz.enigma.inputs.packageAccess; | ||
| 2 | |||
| 3 | public 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 @@ | |||
| 1 | package cuchaz.enigma.inputs.packageAccess; | ||
| 2 | |||
| 3 | public 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 @@ | |||
| 1 | package cuchaz.enigma.inputs.packageAccess.sub; | ||
| 2 | |||
| 3 | import cuchaz.enigma.inputs.packageAccess.Base; | ||
| 4 | |||
| 5 | public 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 | } | ||
diff --git a/src/test/resources/packageAccess/correctMappings/base/Base.mapping b/src/test/resources/packageAccess/correctMappings/base/Base.mapping new file mode 100644 index 00000000..0a86def0 --- /dev/null +++ b/src/test/resources/packageAccess/correctMappings/base/Base.mapping | |||
| @@ -0,0 +1 @@ | |||
| CLASS a base/Base | |||
diff --git a/src/test/resources/packageAccess/correctMappings/base/One.mapping b/src/test/resources/packageAccess/correctMappings/base/One.mapping new file mode 100644 index 00000000..dd4c2083 --- /dev/null +++ b/src/test/resources/packageAccess/correctMappings/base/One.mapping | |||
| @@ -0,0 +1 @@ | |||
| CLASS b base/One | |||
diff --git a/src/test/resources/packageAccess/correctMappings/two/Two.mapping b/src/test/resources/packageAccess/correctMappings/two/Two.mapping new file mode 100644 index 00000000..a179349c --- /dev/null +++ b/src/test/resources/packageAccess/correctMappings/two/Two.mapping | |||
| @@ -0,0 +1 @@ | |||
| CLASS c two/Two | |||
diff --git a/src/test/resources/packageAccess/wrongMappings/base/Base.mapping b/src/test/resources/packageAccess/wrongMappings/base/Base.mapping new file mode 100644 index 00000000..0a86def0 --- /dev/null +++ b/src/test/resources/packageAccess/wrongMappings/base/Base.mapping | |||
| @@ -0,0 +1 @@ | |||
| CLASS a base/Base | |||
diff --git a/src/test/resources/packageAccess/wrongMappings/one/One.mapping b/src/test/resources/packageAccess/wrongMappings/one/One.mapping new file mode 100644 index 00000000..15b42cf5 --- /dev/null +++ b/src/test/resources/packageAccess/wrongMappings/one/One.mapping | |||
| @@ -0,0 +1 @@ | |||
| CLASS b one/One | |||
diff --git a/src/test/resources/packageAccess/wrongMappings/two/Two.mapping b/src/test/resources/packageAccess/wrongMappings/two/Two.mapping new file mode 100644 index 00000000..a179349c --- /dev/null +++ b/src/test/resources/packageAccess/wrongMappings/two/Two.mapping | |||
| @@ -0,0 +1 @@ | |||
| CLASS c two/Two | |||