(no commit message)
[utils] / system / general / src / test / java / org / wamblee / system / adapters / ClassAdapterTest.java
index 925f3ef9eb509cc5798ca49f135f50e8d5bd7377..e2c146cb752f6fa075ffbafa4233029ab19d6875 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008 the original author or authors.
+ * Copyright 2005-2010 the original author or authors.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 package org.wamblee.system.adapters;
 
+import org.wamblee.system.container.Container;
 import org.wamblee.system.core.Component;
-import org.wamblee.system.core.Container;
-import org.wamblee.system.core.DefaultScope;
 import org.wamblee.system.core.ProvidedInterface;
 import org.wamblee.system.core.RequiredInterface;
 import org.wamblee.system.core.Scope;
-import org.wamblee.test.AssertionUtils;
 
-import junit.framework.TestCase;
+import org.wamblee.test.AssertionUtils;
 
+/**
+ * 
+ * @author $author$
+ * @version $Revision$
+ */
 public class ClassAdapterTest extends AdapterTestCase {
+    public void testSimpleConstructorInjection() {
+        ClassConfiguration x1Config = new ClassConfiguration(X1.class);
+        x1Config.getObjectConfig().getSetterConfig().initAllSetters();
+        x1Config.getConstructorConfig().getParameters().setValue(0, "hello");
 
+        ClassConfiguration x4Config = new ClassConfiguration(X4.class);
+        x4Config.getObjectConfig().getSetterConfig().initAllSetters();
 
-       public void testSimpleConstructorInjection() { 
-               ClassConfiguration x1Config = new ClassConfiguration(X1.class);
-               x1Config.getConstructorConfig().getParameters().setValue(0, "hello");
-        ClassConfiguration x4Config = new ClassConfiguration(X4.class); 
-        
         ClassAdapter x1Adapter = new ClassAdapter("x1", x1Config);
         ClassAdapter x4Adapter = new ClassAdapter("x4", x4Config);
-        
-        Container container = new Container("top", new Component[] { 
-                       x1Adapter, x4Adapter
-           }, new ProvidedInterface[0], new RequiredInterface[0]);
-        
+
+        Container container = new Container("top", new Component[] { x1Adapter,
+            x4Adapter }, new ProvidedInterface[0], new RequiredInterface[0]);
+
         Scope scope = container.start();
         AssertionUtils.assertEquals(new String[] { "x1(hello)", "x4(x1)" },
-                       EVENT_TRACKER.getEvents(Thread.currentThread()).toArray());
-        
-        Object obj = scope.getRuntime(x1Adapter);
-        assertTrue(obj instanceof X1); 
-        obj = scope.getRuntime(x4Adapter);
-        assertTrue(obj instanceof X4);
-       }
+            getEventTracker().getEvents(Thread.currentThread()).toArray());
+
+        Object obj1 = scope.getRuntime(x1Adapter);
+        assertTrue(obj1 instanceof X1);
+
+        Object obj4 = scope.getRuntime(x4Adapter);
+        assertTrue(obj4 instanceof X4);
+
+        X1 x1 = (X1) obj1;
+        X4 x4 = (X4) obj4;
+
+        assertSame(x1, x4.getX1());
+    }
+
+    public void testConstructorAndSetterInjection() {
+        ClassConfiguration x1Config = new ClassConfiguration(X1.class);
+        x1Config.getObjectConfig().getSetterConfig().initAllSetters();
+        x1Config.getConstructorConfig().getParameters().setValue(0, "hello");
+
+        ClassConfiguration x4Config = new ClassConfiguration(X4.class);
+        x4Config.getObjectConfig().getSetterConfig().initAllSetters();
+
+        ClassConfiguration x8Config = new ClassConfiguration(X8.class);
+        x8Config.getObjectConfig().getSetterConfig().initAllSetters();
+
+        ClassAdapter x1Adapter = new ClassAdapter("x1", x1Config);
+        ClassAdapter x4Adapter = new ClassAdapter("x4", x4Config);
+        ClassAdapter x8Adapter = new ClassAdapter("x8", x8Config);
+
+        Container container = new Container("top", new Component[] { x1Adapter,
+            x4Adapter, x8Adapter }, new ProvidedInterface[0],
+            new RequiredInterface[0]);
+
+        Scope scope = container.start();
+        AssertionUtils.assertEquals(new String[] { "x1(hello)", "x4(x1)",
+            "x8(x1)", "x8.setX4(x4)" }, getEventTracker().getEvents(
+            Thread.currentThread()).toArray());
+
+        Object obj1 = scope.getRuntime(x1Adapter);
+        assertTrue(obj1 instanceof X1);
+
+        Object obj4 = scope.getRuntime(x4Adapter);
+        assertTrue(obj4 instanceof X4);
+
+        Object obj8 = scope.getRuntime(x8Adapter);
+
+        X1 x1 = (X1) obj1;
+        X4 x4 = (X4) obj4;
+        X8 x8 = (X8) obj8;
+
+        assertSame(x4, x8.getX4());
+        assertSame(x1, x8.getX1());
+    }
 }