summaryrefslogtreecommitdiff
path: root/israfil-foundation-dynamic/src/test/java/net/israfil/foundation/dynamic/DynamicUtilTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'israfil-foundation-dynamic/src/test/java/net/israfil/foundation/dynamic/DynamicUtilTest.java')
-rw-r--r--israfil-foundation-dynamic/src/test/java/net/israfil/foundation/dynamic/DynamicUtilTest.java160
1 files changed, 160 insertions, 0 deletions
diff --git a/israfil-foundation-dynamic/src/test/java/net/israfil/foundation/dynamic/DynamicUtilTest.java b/israfil-foundation-dynamic/src/test/java/net/israfil/foundation/dynamic/DynamicUtilTest.java
new file mode 100644
index 0000000..31d11a7
--- /dev/null
+++ b/israfil-foundation-dynamic/src/test/java/net/israfil/foundation/dynamic/DynamicUtilTest.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (c) 2003-2009 Israfil Consulting Services Corporation
+ * Copyright (c) 2003-2009 Christian Edward Gruber
+ * All Rights Reserved
+ *
+ * This software is licensed under the Berkeley Standard Distribution license,
+ * (BSD license), as defined below:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. Neither the name of Israfil Consulting Services nor the names of its contributors
+ * may be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+ * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * $Id: DynamicUtilTest.java 130 2006-12-31 23:22:17Z cgruber $
+ */
+package net.israfil.foundation.dynamic;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+/**
+ *
+ * @author <a href="mailto:cgruber@israfil.net">Christian Edward Gruber </a>
+ * @author Latest: $Author: cgruber $
+ * @version $Revision: 130 $
+ */
+@Test
+public class DynamicUtilTest {
+
+ public void testAddSuperinterfaces1() {
+ Class<?> clz = IA.class;
+ Set<Class<?>> cSet = new HashSet<Class<?>>();
+ DynamicUtil.addSuperInterfaces(cSet,clz);
+ Assert.assertEquals(0,cSet.size());
+ }
+ public void testAddSuperinterfaces2() {
+ Class<?> clz = IC.class;
+ Set<Class<?>> cSet = new HashSet<Class<?>>();
+ DynamicUtil.addSuperInterfaces(cSet,clz);
+ Assert.assertTrue(cSet.contains(IA.class),"Should have type IA");
+ Assert.assertEquals(1,cSet.size());
+ }
+ public void testClassLookupForA() {
+ Class<?> clz = A.class;
+ Set<Class<?>> cSet = DynamicUtil.getAllParentTypes(clz);
+ Assert.assertTrue(cSet.contains(IA.class),"Should have type IA");
+ Assert.assertTrue(cSet.contains(Object.class),"Should have type Object");
+ Assert.assertEquals(2,cSet.size());
+ }
+ public void testClassLookupForB() {
+ Class<?> clz = B.class;
+ Set<Class<?>> cSet = DynamicUtil.getAllParentTypes(clz);
+ Assert.assertTrue(cSet.contains(IA.class),"Should have type IA");
+ Assert.assertTrue(cSet.contains(A.class),"Should have type A");
+ Assert.assertTrue(cSet.contains(IB.class),"Should have type IB");
+ Assert.assertTrue(cSet.contains(Object.class),"Should have type Object");
+ Assert.assertEquals(4,cSet.size());
+ }
+ public void testClassLookupForC() {
+ Class<?> clz = C.class;
+ Set<Class<?>> cSet = DynamicUtil.getAllParentTypes(clz);
+ Assert.assertTrue(cSet.contains(IA.class),"Should have type IA");
+ Assert.assertTrue(cSet.contains(IC.class),"Should have type IC");
+ Assert.assertTrue(cSet.contains(Object.class),"Should have type Object");
+ Assert.assertFalse(cSet.contains(A.class),"Should not have type A");
+ Assert.assertEquals(3,cSet.size());
+ }
+
+ public void testRespondsTo() {
+ Object obj = new TestObject();
+ Assert.assertTrue(DynamicUtil.respondsTo(obj,"action:java.lang.String"));
+ Assert.assertFalse(DynamicUtil.respondsTo(obj,"action"));
+ Assert.assertFalse(DynamicUtil.respondsTo(obj,"action:boolean"));
+ Assert.assertTrue(DynamicUtil.respondsTo(obj,"equals:java.lang.Object"));
+ }
+
+ public void testHasPrimitiveTypeEquivalent() {
+ Assert.assertTrue(DynamicUtil.hasPrimitiveTypeEquivalent(Boolean.class));
+ Assert.assertTrue(DynamicUtil.hasPrimitiveTypeEquivalent(Integer.class));
+ Assert.assertTrue(DynamicUtil.hasPrimitiveTypeEquivalent(Long.class));
+ Assert.assertTrue(DynamicUtil.hasPrimitiveTypeEquivalent(Short.class));
+ Assert.assertTrue(DynamicUtil.hasPrimitiveTypeEquivalent(Byte.class));
+ Assert.assertTrue(DynamicUtil.hasPrimitiveTypeEquivalent(Double.class));
+ Assert.assertTrue(DynamicUtil.hasPrimitiveTypeEquivalent(Character.class));
+ Assert.assertFalse(DynamicUtil.hasPrimitiveTypeEquivalent(String.class));
+ }
+
+ public void testGetMethodForSelectorObjectString() {
+ Method m = null;
+ Object obj = new TestObject();
+
+ m = DynamicUtil.getMethodForSelector(obj,"action:java.lang.String");
+ Assert.assertNotNull(m);
+
+ m = DynamicUtil.getMethodForSelector(obj,"action:boolean");
+ Assert.assertNull(m);
+
+ // force a test of getMethodForSelector(Object,String) with a class
+ m = DynamicUtil.getMethodForSelector((Object)obj.getClass(),"action:java.lang.String");
+ // force a test of getMethodForSelector(Class<?>,String)
+ m = DynamicUtil.getMethodForSelector((Class<?>) obj.getClass(),
+ "action:java.lang.String");
+ Assert.assertNotNull(m);
+
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testConstructWithClass() {
+ ArrayList<String> al = DynamicUtil.construct(ArrayList.class);
+ Assert.assertNotNull(al);
+ Assert.assertEquals(ArrayList.class,al.getClass());
+ }
+ @SuppressWarnings("unchecked")
+ public void testConstructWithString() {
+ ArrayList<String> al = (ArrayList<String>)DynamicUtil.construct("java.util.ArrayList");
+ Assert.assertNotNull(al);
+ Assert.assertEquals(ArrayList.class,al.getClass());
+ }
+
+ public void testGetMethodForSelectorClassString() {
+ Object obj = new TestObject();
+ Assert.assertNotNull(DynamicUtil.getMethodForSelector(obj.getClass(),"action:java.lang.String"));
+ }
+
+ public interface IA {}
+ public interface IB {}
+ public interface IC extends IA {}
+
+ public class A implements IA {}
+ public class B extends A implements IB {}
+ public class C implements IC {}
+
+ public class TestObject {
+ public void action(String s) {}
+ }
+
+}