package jadx.tests.integration.generics;
import jadx.core.dex.nodes.ClassNode;
import jadx.tests.api.IntegrationTest;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
import java.util.Map;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertThat;
public class TestGenerics2 extends IntegrationTest {
public static class TestCls {
private static class ItemReference<V> extends WeakReference<V> {
private Object id;
public ItemReference(V item, Object id, ReferenceQueue<? super V> queue) {
super(item, queue);
this.id = id;
}
}
public static class ItemReferences<V> {
private Map<Object, ItemReference<V>> items;
public V get(Object id) {
WeakReference<V> ref = this.items.get(id);
return (ref != null) ? ref.get() : null;
}
}
}
@Test
public void test() {
ClassNode cls = getClassNode(TestCls.class);
String code = cls.getCode().toString();
assertThat(code, containsString("public ItemReference(V item, Object id, ReferenceQueue<? super V> queue) {"));
assertThat(code, containsString("public V get(Object id) {"));
assertThat(code, containsString("WeakReference<V> ref = "));
assertThat(code, containsString("return ref != null ? ref.get() : null;"));
}
}