From 00fcd0550fcdda621c2e4662f6ddd55ce673b931 Mon Sep 17 00:00:00 2001 From: Gegy Date: Thu, 24 Jan 2019 14:48:32 +0200 Subject: [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 --- .../enigma/TestJarIndexConstructorReferences.java | 31 +++++++++++----------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java') diff --git a/src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java b/src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java index 763639a..c3f3b66 100644 --- a/src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java +++ b/src/test/java/cuchaz/enigma/TestJarIndexConstructorReferences.java @@ -12,12 +12,11 @@ package cuchaz.enigma; import cuchaz.enigma.analysis.EntryReference; -import cuchaz.enigma.analysis.JarIndex; import cuchaz.enigma.analysis.ParsedJar; -import cuchaz.enigma.mapping.entry.ClassEntry; -import cuchaz.enigma.mapping.entry.MethodDefEntry; -import cuchaz.enigma.mapping.entry.MethodEntry; -import cuchaz.enigma.mapping.entry.ReferencedEntryPool; +import cuchaz.enigma.analysis.index.JarIndex; +import cuchaz.enigma.translation.representation.entry.ClassEntry; +import cuchaz.enigma.translation.representation.entry.MethodDefEntry; +import cuchaz.enigma.translation.representation.entry.MethodEntry; import org.junit.Test; import java.io.File; @@ -41,13 +40,13 @@ public class TestJarIndexConstructorReferences { public TestJarIndexConstructorReferences() throws Exception { File jarFile = new File("build/test-obf/constructors.jar"); - index = new JarIndex(new ReferencedEntryPool()); - index.indexJar(new ParsedJar(new JarFile(jarFile)), false); + index = JarIndex.empty(); + index.indexJar(new ParsedJar(new JarFile(jarFile)), s -> {}); } @Test public void obfEntries() { - assertThat(index.getObfClassEntries(), containsInAnyOrder(newClass("cuchaz/enigma/inputs/Keep"), baseClass, + assertThat(index.getEntryIndex().getClasses(), containsInAnyOrder(newClass("cuchaz/enigma/inputs/Keep"), baseClass, subClass, subsubClass, defaultClass, callerClass)); } @@ -55,7 +54,7 @@ public class TestJarIndexConstructorReferences { @SuppressWarnings("unchecked") public void baseDefault() { MethodEntry source = newMethod(baseClass, "", "()V"); - Collection> references = index.getMethodsReferencing(source); + Collection> references = index.getReferenceIndex().getReferencesToMethod(source); assertThat(references, containsInAnyOrder( newBehaviorReferenceByMethod(source, callerClass.getName(), "a", "()V"), newBehaviorReferenceByMethod(source, subClass.getName(), "", "()V"), @@ -67,7 +66,7 @@ public class TestJarIndexConstructorReferences { @SuppressWarnings("unchecked") public void baseInt() { MethodEntry source = newMethod(baseClass, "", "(I)V"); - assertThat(index.getMethodsReferencing(source), containsInAnyOrder( + assertThat(index.getReferenceIndex().getReferencesToMethod(source), containsInAnyOrder( newBehaviorReferenceByMethod(source, callerClass.getName(), "b", "()V") )); } @@ -76,7 +75,7 @@ public class TestJarIndexConstructorReferences { @SuppressWarnings("unchecked") public void subDefault() { MethodEntry source = newMethod(subClass, "", "()V"); - assertThat(index.getMethodsReferencing(source), containsInAnyOrder( + assertThat(index.getReferenceIndex().getReferencesToMethod(source), containsInAnyOrder( newBehaviorReferenceByMethod(source, callerClass.getName(), "c", "()V"), newBehaviorReferenceByMethod(source, subClass.getName(), "", "(I)V") )); @@ -86,7 +85,7 @@ public class TestJarIndexConstructorReferences { @SuppressWarnings("unchecked") public void subInt() { MethodEntry source = newMethod(subClass, "", "(I)V"); - assertThat(index.getMethodsReferencing(source), containsInAnyOrder( + assertThat(index.getReferenceIndex().getReferencesToMethod(source), containsInAnyOrder( newBehaviorReferenceByMethod(source, callerClass.getName(), "d", "()V"), newBehaviorReferenceByMethod(source, subClass.getName(), "", "(II)V"), newBehaviorReferenceByMethod(source, subsubClass.getName(), "", "(I)V") @@ -97,7 +96,7 @@ public class TestJarIndexConstructorReferences { @SuppressWarnings("unchecked") public void subIntInt() { MethodEntry source = newMethod(subClass, "", "(II)V"); - assertThat(index.getMethodsReferencing(source), containsInAnyOrder( + assertThat(index.getReferenceIndex().getReferencesToMethod(source), containsInAnyOrder( newBehaviorReferenceByMethod(source, callerClass.getName(), "e", "()V") )); } @@ -105,14 +104,14 @@ public class TestJarIndexConstructorReferences { @Test public void subIntIntInt() { MethodEntry source = newMethod(subClass, "", "(III)V"); - assertThat(index.getMethodsReferencing(source), is(empty())); + assertThat(index.getReferenceIndex().getReferencesToMethod(source), is(empty())); } @Test @SuppressWarnings("unchecked") public void subsubInt() { MethodEntry source = newMethod(subsubClass, "", "(I)V"); - assertThat(index.getMethodsReferencing(source), containsInAnyOrder( + assertThat(index.getReferenceIndex().getReferencesToMethod(source), containsInAnyOrder( newBehaviorReferenceByMethod(source, callerClass.getName(), "f", "()V") )); } @@ -121,7 +120,7 @@ public class TestJarIndexConstructorReferences { @SuppressWarnings("unchecked") public void defaultConstructable() { MethodEntry source = newMethod(defaultClass, "", "()V"); - assertThat(index.getMethodsReferencing(source), containsInAnyOrder( + assertThat(index.getReferenceIndex().getReferencesToMethod(source), containsInAnyOrder( newBehaviorReferenceByMethod(source, callerClass.getName(), "g", "()V") )); } -- cgit v1.2.3