fix: deep reload for inner classes, const values and anonymous classes
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
package jadx.tests.integration.rename;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jadx.core.dex.nodes.ClassNode;
|
||||
import jadx.tests.api.IntegrationTest;
|
||||
|
||||
import static jadx.tests.api.utils.assertj.JadxAssertions.assertThat;
|
||||
|
||||
public class TestAnonymousInline extends IntegrationTest {
|
||||
|
||||
public static class TestCls {
|
||||
public Runnable test() {
|
||||
return new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println("run");
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
ClassNode cls = getClassNode(TestCls.class);
|
||||
assertThat(cls.getCode())
|
||||
.containsOnlyOnce("return new Runnable() {");
|
||||
|
||||
assertThat(cls.reloadCode())
|
||||
.print()
|
||||
.containsOnlyOnce("return new Runnable() {")
|
||||
.doesNotContain("AnonymousClass1");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package jadx.tests.integration.rename;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jadx.core.dex.nodes.ClassNode;
|
||||
import jadx.tests.api.IntegrationTest;
|
||||
|
||||
import static jadx.tests.api.utils.assertj.JadxAssertions.assertThat;
|
||||
|
||||
public class TestConstReplace extends IntegrationTest {
|
||||
|
||||
public static class TestCls {
|
||||
public static final String CONST = "SOME_CONST";
|
||||
|
||||
public String test() {
|
||||
return CONST;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
ClassNode cls = getClassNode(TestCls.class);
|
||||
assertThat(cls.getCode())
|
||||
.containsOnlyOnce("return CONST;");
|
||||
|
||||
assertThat(cls.reloadCode())
|
||||
.print()
|
||||
.containsOnlyOnce("return CONST;");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package jadx.tests.integration.rename;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jadx.core.dex.nodes.ClassNode;
|
||||
import jadx.tests.api.IntegrationTest;
|
||||
|
||||
import static jadx.tests.api.utils.assertj.JadxAssertions.assertThat;
|
||||
|
||||
public class TestRenameEnum extends IntegrationTest {
|
||||
|
||||
public static class TestCls {
|
||||
|
||||
public enum A implements Runnable {
|
||||
ONE {
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println("ONE");
|
||||
}
|
||||
},
|
||||
TWO {
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println("TWO");
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
ClassNode cls = getClassNode(TestCls.class);
|
||||
assertThat(cls.getCode())
|
||||
.containsOnlyOnce("public enum A ")
|
||||
.containsOnlyOnce("ONE {");
|
||||
|
||||
cls.getInnerClasses().get(0).getClassInfo().changeShortName("ARenamed");
|
||||
|
||||
assertThat(cls.reloadCode())
|
||||
.print()
|
||||
.containsOnlyOnce("public enum ARenamed ")
|
||||
.containsOnlyOnce("ONE {");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user