|
@@ -8,16 +8,23 @@ package net.ranides.assira.reflection.impl;
|
|
|
|
|
|
|
|
import org.junit.Test;
|
|
import org.junit.Test;
|
|
|
|
|
|
|
|
|
|
+import net.ranides.assira.collection.lists.IntList;
|
|
|
|
|
+import net.ranides.assira.collection.sets.OpenSet;
|
|
|
|
|
+import net.ranides.assira.collection.sets.SetUtils;
|
|
|
import net.ranides.assira.generic.TypeToken;
|
|
import net.ranides.assira.generic.TypeToken;
|
|
|
import net.ranides.assira.reflection.*;
|
|
import net.ranides.assira.reflection.*;
|
|
|
import net.ranides.test.mockup.reflection.ForBeanModel;
|
|
import net.ranides.test.mockup.reflection.ForBeanModel;
|
|
|
import net.ranides.assira.text.ResolveFormatUtils;
|
|
import net.ranides.assira.text.ResolveFormatUtils;
|
|
|
|
|
|
|
|
|
|
+import java.io.Serializable;
|
|
|
import java.util.AbstractList;
|
|
import java.util.AbstractList;
|
|
|
import java.util.Arrays;
|
|
import java.util.Arrays;
|
|
|
import java.util.Collections;
|
|
import java.util.Collections;
|
|
|
|
|
+import java.util.HashSet;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.NoSuchElementException;
|
|
import java.util.NoSuchElementException;
|
|
|
|
|
+import java.util.Queue;
|
|
|
|
|
+import java.util.Set;
|
|
|
import java.util.function.Supplier;
|
|
import java.util.function.Supplier;
|
|
|
|
|
|
|
|
import static net.ranides.assira.junit.NewAssert.*;
|
|
import static net.ranides.assira.junit.NewAssert.*;
|
|
@@ -203,6 +210,53 @@ public class AClassTest {
|
|
|
|
|
|
|
|
// System.out.println(listAt.returns().toString()); // sorry, we can't deduce interface arguments
|
|
// System.out.println(listAt.returns().toString()); // sorry, we can't deduce interface arguments
|
|
|
assertEquals("double", listAvg.returns().toString());
|
|
assertEquals("double", listAvg.returns().toString());
|
|
|
|
|
+
|
|
|
|
|
+ System.out.println();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ public void testInterfaces() {
|
|
|
|
|
+ IClass<MyIntList> type1 = IClass.typeinfo(MyIntList.class);
|
|
|
|
|
+
|
|
|
|
|
+ Set<String> declare1 = type1.interfaces().require(DECLARED).stream(Object::toString).set();
|
|
|
|
|
+ Set<String> inherit1 = type1.interfaces().stream(Object::toString).set();
|
|
|
|
|
+
|
|
|
|
|
+ String[] expect1 = {
|
|
|
|
|
+ "net.ranides.assira.collection.lists.IntList",
|
|
|
|
|
+ "java.util.List<java.lang.Integer>",
|
|
|
|
|
+ "java.io.Serializable"
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ assertEquals(new OpenSet<>(expect1), declare1);
|
|
|
|
|
+ assertEquals(new OpenSet<>(expect1), inherit1);
|
|
|
|
|
+
|
|
|
|
|
+ IClass<MySubList> type2 = IClass.typeinfo(MySubList.class);
|
|
|
|
|
+ Set<String> declare2 = type2.interfaces().require(DECLARED).stream(Object::toString).set();
|
|
|
|
|
+ Set<String> inherit2 = type2.interfaces().stream(Object::toString).set();
|
|
|
|
|
+
|
|
|
|
|
+ String[] expect2 = {
|
|
|
|
|
+ "java.util.List<java.lang.Integer>",
|
|
|
|
|
+ "java.util.Queue<java.lang.Integer>"
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ String[] expect3 = {
|
|
|
|
|
+ "net.ranides.assira.collection.lists.IntList",
|
|
|
|
|
+ "java.util.List<java.lang.Integer>",
|
|
|
|
|
+ "java.util.Queue<java.lang.Integer>",
|
|
|
|
|
+ "java.io.Serializable"
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ assertEquals(new OpenSet<>(expect2), declare2);
|
|
|
|
|
+ assertEquals(new OpenSet<>(expect3), inherit2);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ public abstract class MySubList extends MyIntList implements Queue<Integer>, List<Integer> {
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public abstract class MyIntList implements List<Integer>, Serializable, IntList {
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private interface MySpec1<T extends AbstractList<Supplier<T>>> {
|
|
private interface MySpec1<T extends AbstractList<Supplier<T>>> {
|