From cb8823eb0b446d5c1b9b580e5578866e691771d8 Mon Sep 17 00:00:00 2001 From: liach Date: Wed, 15 May 2019 22:03:13 -0700 Subject: Feature/weave (#138) * Add weave/stitch style command system to enigma Also fixed divide by zero stupidity Signed-off-by: liach * Add tests for package access index and command Signed-off-by: liach * Minor tweaks Signed-off-by: liach --- .../cuchaz/enigma/PackageVisibilityIndexTest.java | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java (limited to 'src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java') diff --git a/src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java b/src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java new file mode 100644 index 0000000..ae5d6d2 --- /dev/null +++ b/src/test/java/cuchaz/enigma/PackageVisibilityIndexTest.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2015 Jeff Martin. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser General Public + * License v3.0 which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl.html + * + * Contributors: + * Jeff Martin - initial API and implementation + ******************************************************************************/ + +package cuchaz.enigma; + +import cuchaz.enigma.analysis.ParsedJar; +import cuchaz.enigma.analysis.index.JarIndex; +import cuchaz.enigma.analysis.index.PackageVisibilityIndex; +import cuchaz.enigma.translation.representation.entry.ClassEntry; +import org.junit.Test; + +import java.util.jar.JarFile; + +import static cuchaz.enigma.TestEntryFactory.newClass; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.containsInAnyOrder; + +public class PackageVisibilityIndexTest { + + private static final ClassEntry KEEP = newClass("cuchaz/enigma/inputs/Keep"); + private static final ClassEntry BASE = newClass("a"); + private static final ClassEntry SAME_PACKAGE_CHILD = newClass("b"); + private static final ClassEntry SAME_PACKAGE_CHILD_INNER = newClass("b$a"); + private static final ClassEntry OTHER_PACKAGE_CHILD = newClass("c"); + private static final ClassEntry OTHER_PACKAGE_CHILD_INNER = newClass("c$a"); + private final JarIndex jarIndex; + + public PackageVisibilityIndexTest() throws Exception { + jarIndex = JarIndex.empty(); + ParsedJar jar = new ParsedJar(new JarFile("build/test-obf/packageAccess.jar")); + jarIndex.indexJar(jar, s -> { + }); + } + + @Test + public void test() { + PackageVisibilityIndex visibilityIndex = jarIndex.getPackageVisibilityIndex(); + assertThat(visibilityIndex.getPartition(BASE), containsInAnyOrder(BASE, SAME_PACKAGE_CHILD, SAME_PACKAGE_CHILD_INNER)); + System.out.println(visibilityIndex.getPartitions()); + assertThat(visibilityIndex.getPartitions(), containsInAnyOrder( + containsInAnyOrder(BASE, SAME_PACKAGE_CHILD, SAME_PACKAGE_CHILD_INNER), + containsInAnyOrder(OTHER_PACKAGE_CHILD, OTHER_PACKAGE_CHILD_INNER), + contains(KEEP) + )); + } +} -- cgit v1.2.3