package jadx.tests.integration.invoke; import jadx.core.dex.nodes.ClassNode; import jadx.tests.api.IntegrationTest; import java.io.IOException; import org.junit.Test; import static jadx.tests.api.utils.JadxMatchers.containsOne; import static org.junit.Assert.assertThat; public class TestInvoke1 extends IntegrationTest { public static class TestCls { private A is; private C test(int start) throws IOException { int id = is.readInt32(); String name = is.readString16Fixed(128); long typeStringsOffset = start + is.readInt32(); long keyStringsOffset = start + is.readInt32(); String[] types = null; if (typeStringsOffset != 0) { types = strs(); } String[] keys = null; if (keyStringsOffset != 0) { keys = strs(); } C pkg = new C(id, name, types, keys); if (id == 0x7F) { is.readInt32(); } return pkg; } private String[] strs() { return new String[0]; } private static final class C { public C(int id, String name, String[] types, String[] keys) { } } private final class A { public int readInt32() { return 0; } public String readString16Fixed(int i) { return null; } } } @Test public void test() { ClassNode cls = getClassNode(TestCls.class); String code = cls.getCode().toString(); assertThat(code, containsOne("C pkg = new C(id, name, types, keys);")); } }