(no commit message)
[utils] / system / general / src / test / java / org / wamblee / system / adapters / SetterConfigurationTest.java
index 2b7bd9187477d85981057caa10d8580edce682e9..730dfe6d84329d2d284999a72ccdaf386385af8d 100644 (file)
  */
 package org.wamblee.system.adapters;
 
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
+import javax.sql.DataSource;
+
 import org.wamblee.system.core.DefaultProvidedInterface;
 import org.wamblee.system.core.ProvidedInterface;
 import org.wamblee.system.core.RequiredInterface;
@@ -201,7 +204,7 @@ public class SetterConfigurationTest extends AdapterTestCase {
                assertNull(obj.getPort());
        }
 
-       public void testAdd() {
+       public void testAddByName() {
                SetterConfiguration config = new SetterConfiguration(X6.class);
                config.clear().add("host");
                List<RequiredInterface> required = config.getRequiredInterfaces();
@@ -222,6 +225,44 @@ public class SetterConfigurationTest extends AdapterTestCase {
                assertEquals("hello", obj.getHost());
                assertNull(obj.getPort());
        }
+       
+       public void testAddByType() { 
+               SetterConfiguration config = new SetterConfiguration(X6.class);
+               config.clear().add(String.class);
+               List<RequiredInterface> required = config.getRequiredInterfaces();
+               Collections.sort(required, new RequiredInterfaceComparator());
+               assertEquals(1, required.size());
+               assertEquals("host", required.get(0).getName());
+
+               ProvidedInterface provided0 = new DefaultProvidedInterface("janse",
+                               String.class);
+               required.get(0).setProvider(provided0);
+               provided0.publish("hello", _scope);
+
+               X6 obj = new X6();
+               assertNull(obj.getHost());
+               assertNull(obj.getPort());
+
+               config.inject(_scope, obj);
+               assertEquals("hello", obj.getHost());
+               assertNull(obj.getPort());
+       }
+       
+       public void testAddPrivate() { 
+               X5 obj = new X5();
+               final SetterConfiguration config = new SetterConfiguration(X5.class);
+               AssertionUtils.assertException(new AssertionUtils.ErroneousCode() { 
+                       @Override
+                       public void run() throws Exception {
+                               config.add("xyz");      
+                       }
+               }, IllegalArgumentException.class);
+               
+               config.setNonPublic(true);
+               config.clear();
+               config.add("xyz");
+               assertEquals(1, config.getRequiredInterfaces().size());
+       }
 
        public void testAddNonExisting() {
                final SetterConfiguration config = new SetterConfiguration(X6.class);
@@ -233,6 +274,23 @@ public class SetterConfigurationTest extends AdapterTestCase {
                                config.add("bladibla");
                        }
                }, IllegalArgumentException.class);
+               AssertionUtils.assertException(new AssertionUtils.ErroneousCode() {
+                       @Override
+                       public void run() throws Exception {
+                               config.add(DataSource.class);
+                       }
+               }, IllegalArgumentException.class);
+       }
+       
+       public void testAddByTypeNonUnique() { 
+               final SetterConfiguration config = new SetterConfiguration(X11.class);
+               config.clear();
+               AssertionUtils.assertException(new AssertionUtils.ErroneousCode() {
+                       @Override
+                       public void run() throws Exception {
+                               config.add(String.class);
+                       }
+               }, IllegalArgumentException.class);
        }
 
        public void testRemove() {
@@ -267,4 +325,15 @@ public class SetterConfigurationTest extends AdapterTestCase {
                        }
                }, IllegalArgumentException.class);
        }
+       
+       public void testOverridingSetters() { 
+               SetterConfiguration config = new SetterConfiguration(X10.class);
+               assertEquals(2, config.getRequiredInterfaces().size());
+               List<Method> methods = config.getSetters(); 
+               assertEquals(2, methods.size());
+               for (Method method: methods) { 
+                       assertEquals(X10.class, method.getDeclaringClass());
+               }
+               
+       }
 }