diff --git a/jadx-core/src/test/java/jadx/tests/api/utils/TestUtils.java b/jadx-core/src/test/java/jadx/tests/api/utils/TestUtils.java index 256b6d681..2424dd654 100644 --- a/jadx-core/src/test/java/jadx/tests/api/utils/TestUtils.java +++ b/jadx-core/src/test/java/jadx/tests/api/utils/TestUtils.java @@ -1,7 +1,11 @@ package jadx.tests.api.utils; +import org.junit.jupiter.api.extension.ExtendWith; + +import jadx.NotYetImplementedExtension; import jadx.core.codegen.CodeWriter; +@ExtendWith(NotYetImplementedExtension.class) public class TestUtils { public static String indent(int indent) { diff --git a/jadx-core/src/test/java/jadx/tests/integration/generics/MissingGenericsTypesTest.java b/jadx-core/src/test/java/jadx/tests/integration/generics/MissingGenericsTypesTest.java new file mode 100644 index 000000000..35e139d65 --- /dev/null +++ b/jadx-core/src/test/java/jadx/tests/integration/generics/MissingGenericsTypesTest.java @@ -0,0 +1,34 @@ +package jadx.tests.integration.generics; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; + +import org.junit.jupiter.api.Test; + +import jadx.NotYetImplemented; +import jadx.core.dex.nodes.ClassNode; +import jadx.tests.api.SmaliTest; + +public class MissingGenericsTypesTest extends SmaliTest { + + /* + private int x; + + public void test() { + Map map = new HashMap(); + x = 1; + for (String s : map.keySet()) { + System.out.println(s); + } + } + */ + + @Test + @NotYetImplemented + public void test() { + ClassNode cls = getClassNodeFromSmaliWithPath("generics", "MissingGenericsTypesTest"); + String code = cls.getCode().toString(); + + assertThat(code, containsString("Map()V + .locals 0 + + .line 9 + invoke-direct {p0}, Ljava/lang/Object;->()V + + return-void +.end method + + +# virtual methods +.method public test()V + .locals 3 + + .line 14 + new-instance v0, Ljava/util/HashMap; + + invoke-direct {v0}, Ljava/util/HashMap;->()V + + const/4 v1, 0x1 + + .line 15 + iput v1, p0, LMissingGenericsTypesTest;->x:I + + .line 16 + invoke-interface {v0}, Ljava/util/Map;->keySet()Ljava/util/Set; + + move-result-object v0 + + invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator; + + move-result-object v0 + + :goto_0 + invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z + + move-result v1 + + if-eqz v1, :cond_0 + + invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object; + + move-result-object v1 + + check-cast v1, Ljava/lang/String; + + .line 17 + sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream; + + invoke-virtual {v2, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + goto :goto_0 + + :cond_0 + return-void +.end method