Ranides Atterwim 10 jaren geleden
bovenliggende
commit
27621f6cd1

+ 3 - 0
assira/pom.xml

@@ -155,6 +155,9 @@
                                 <exclude>net/ranides/assira/events/EventReactor$*</exclude>
                                 <exclude>net/ranides/assira/events/EventReactor.class</exclude>
                                 
+                                <exclude>net/ranides/assira/reflection/util/PackageScanner$*</exclude>
+                                <exclude>net/ranides/assira/reflection/util/PackageScanner.class</exclude>
+                                
                                 <exclude>net/ranides/assira/text/Charsets.class</exclude>
                                 <exclude>net/ranides/assira/text/FormatHex.class</exclude>
                                 <exclude>net/ranides/assira/text/FormatNumber$*</exclude>

+ 1 - 1
assira/src/main/java/net/ranides/assira/reflection/util/ClassTraits.java

@@ -124,7 +124,7 @@ public final class ClassTraits {
         } else if (ssuper.equals(double.class) || ssuper.equals(Double.class)) {
             return type.equals(double.class) || type.equals(Double.class);
         } else {
-            return ssuper.isAssignableFrom(type);
+            return ssuper.isAssignableFrom(type) || ssuper.isAssignableFrom(ClassUtils.box(type));
         }
     }
     

+ 108 - 0
assira/src/test/java/net/ranides/assira/reflection/util/ClassTraitsTest.java

@@ -124,4 +124,112 @@ public class ClassTraitsTest {
 
     }
     
+    @Test
+    public void testIsSuper_int() {
+        assertTrue(ClassTraits.isSuper(int.class, Integer.class));
+        assertTrue(ClassTraits.isSuper(Integer.class, int.class));
+        assertTrue(ClassTraits.isSuper(Number.class, Integer.class));
+        assertTrue(ClassTraits.isSuper(Number.class, int.class));
+        assertFalse(ClassTraits.isSuper(int.class, byte.class));
+        assertFalse(ClassTraits.isSuper(Integer.class, Byte.class));
+    }
+    
+    @Test
+    public void testIsSuper_long() {
+        assertTrue(ClassTraits.isSuper(long.class, Long.class));
+        assertTrue(ClassTraits.isSuper(Long.class, long.class));
+        assertTrue(ClassTraits.isSuper(Number.class, Long.class));
+        assertTrue(ClassTraits.isSuper(Number.class, long.class));
+        assertFalse(ClassTraits.isSuper(long.class, byte.class));
+        assertFalse(ClassTraits.isSuper(Long.class, Byte.class));
+    }
+    
+    @Test
+    public void testIsSuper_float() {
+        assertTrue(ClassTraits.isSuper(float.class, Float.class));
+        assertTrue(ClassTraits.isSuper(Float.class, float.class));
+        assertTrue(ClassTraits.isSuper(Number.class, Float.class));
+        assertTrue(ClassTraits.isSuper(Number.class, float.class));
+        assertFalse(ClassTraits.isSuper(float.class, byte.class));
+        assertFalse(ClassTraits.isSuper(Float.class, Byte.class));
+    }
+    
+    @Test
+    public void testIsSuper_double() {
+        assertTrue(ClassTraits.isSuper(double.class, Double.class));
+        assertTrue(ClassTraits.isSuper(Double.class, double.class));
+        assertTrue(ClassTraits.isSuper(Number.class, Double.class));
+        assertTrue(ClassTraits.isSuper(Number.class, double.class));
+        assertFalse(ClassTraits.isSuper(double.class, byte.class));
+        assertFalse(ClassTraits.isSuper(Double.class, Byte.class));
+    }
+    
+    @Test
+    public void testIsSuper_byte() {
+        assertTrue(ClassTraits.isSuper(byte.class, Byte.class));
+        assertTrue(ClassTraits.isSuper(Byte.class, byte.class));
+        assertTrue(ClassTraits.isSuper(Number.class, Byte.class));
+        assertTrue(ClassTraits.isSuper(Number.class, byte.class));
+        assertFalse(ClassTraits.isSuper(byte.class, double.class));
+        assertFalse(ClassTraits.isSuper(Byte.class, Double.class));
+    }
+    
+    @Test
+    public void testIsSuper_short() {        
+        assertTrue(ClassTraits.isSuper(short.class, Short.class));
+        assertTrue(ClassTraits.isSuper(Short.class, short.class));
+        assertTrue(ClassTraits.isSuper(Number.class, Short.class));
+        assertTrue(ClassTraits.isSuper(Number.class, short.class));
+        assertFalse(ClassTraits.isSuper(short.class, byte.class));
+        assertFalse(ClassTraits.isSuper(Short.class, Byte.class));
+    }
+    
+    @Test
+    public void testIsSuper_boolean() {
+        assertTrue(ClassTraits.isSuper(boolean.class, Boolean.class));
+        assertTrue(ClassTraits.isSuper(Boolean.class, boolean.class));
+        assertFalse(ClassTraits.isSuper(boolean.class, byte.class));
+        assertFalse(ClassTraits.isSuper(Boolean.class, Byte.class));
+    }
+    
+    @Test
+    public void testIsSuper_char() {        
+        assertTrue(ClassTraits.isSuper(char.class, Character.class));
+        assertTrue(ClassTraits.isSuper(Character.class, char.class));
+        assertFalse(ClassTraits.isSuper(char.class, byte.class));
+        assertFalse(ClassTraits.isSuper(Character.class, Byte.class));
+    }
+    
+    @Test
+    public void testIsSuper_object() {
+        assertTrue(ClassTraits.isSuper(CharSequence.class, CharSequence.class));
+        assertTrue(ClassTraits.isSuper(CharSequence.class, String.class));
+        assertTrue(ClassTraits.isSuper(Object.class, String.class));
+        
+        assertFalse(ClassTraits.isSuper(String.class, CharSequence.class));
+        assertFalse(ClassTraits.isSuper(String.class, Object.class));
+        
+        assertTrue(ClassTraits.isSuper(Object.class, int.class));
+        
+        assertTrue(ClassTraits.isSuper(void.class, void.class));
+        assertTrue(ClassTraits.isSuper(Void.class, void.class));
+        assertTrue(ClassTraits.isSuper(Object.class, void.class));
+    }
+    
+    @Test
+    public void testIsSuper_list() {
+        Class<?> a = int.class;
+        Class<?> b = Integer.class;
+        Class<?> c = Number.class;
+        Class<?> d = Object.class;
+        
+        assertTrue(ClassTraits.isSuper(new Class[]{}, new Class[]{}));
+        assertTrue(ClassTraits.isSuper(new Class[]{a}, new Class[]{a}));
+        assertTrue(ClassTraits.isSuper(new Class[]{b,c}, new Class[]{a,b}));
+        
+        assertFalse(ClassTraits.isSuper(new Class[]{a,a,a}, new Class[]{a,a}));
+        assertFalse(ClassTraits.isSuper(new Class[]{a,a,a}, new Class[]{a,a,c}));
+        assertFalse(ClassTraits.isSuper(new Class[]{a,a,a}, new Class[]{a,a,void.class}));
+    }
+    
 }

+ 24 - 0
assira/src/test/java/net/ranides/assira/reflection/util/ClassUtilsTest.java

@@ -46,4 +46,28 @@ public class ClassUtilsTest {
         assertEquals(TPoint.class, ClassUtils.unbox(TPoint.class));
     }
     
+    @Test
+    public void testIsLoaded() {
+        
+        assertTrue(ClassUtils.isLoaded("net.ranides.assira.collection.mockup.TPoint"));
+        
+        assertFalse(ClassUtils.isLoaded("net.ranides.assira.reflection.util.ClassUtilsTest$IType1"));
+        IType1 a = new IType1();
+        assertTrue(ClassUtils.isLoaded("net.ranides.assira.reflection.util.ClassUtilsTest$IType1"));
+        
+        IType1.IType2.IType3 b = null;
+        assertFalse(ClassUtils.isLoaded("net.ranides.assira.reflection.util.ClassUtilsTest$IType1$IType2$IType3"));
+        b = new IType1.IType2.IType3();
+        assertTrue(ClassUtils.isLoaded("net.ranides.assira.reflection.util.ClassUtilsTest$IType1$IType2$IType3"));
+        
+    }
+    
+    private static final class IType1 {
+        private static final class IType2 {
+            private static final class IType3 {
+    
+            }
+        }
+    }
+    
 }