(no commit message)
[utils] / system / general / src / test / java / org / wamblee / system / SystemAssemblerTest.java
index d862b15e3eb4d08fbe2f1a64b89ebc60fa7b8425..7bbf08bf921b5ee5b294c74d2d6c75e236a877c3 100644 (file)
@@ -6,14 +6,18 @@ import java.util.Arrays;
 
 import org.wamblee.system.Component.Status;
 import org.wamblee.test.AssertionUtils;
+import org.wamblee.test.EventTracker;
 
 import junit.framework.TestCase;
 
 public class SystemAssemblerTest extends TestCase {
 
+       private EventTracker<String> _tracker;
+
        @Override
        protected void setUp() throws Exception {
                super.setUp();
+               _tracker = new EventTracker<String>();
        }
 
        private static class MyMultiple implements Serializable, Runnable {
@@ -28,12 +32,12 @@ public class SystemAssemblerTest extends TestCase {
                                Runnable.class);
                RequiredInterface req2 = new DefaultRequiredInterface("name",
                                Serializable.class);
-               ProvidedInterface prov1 = new DefaultProvidedInterface(
-                               "name", Runnable.class);
-               ProvidedInterface prov2 = new DefaultProvidedInterface(
-                               "name", Serializable.class);
-               ProvidedInterface prov3 = new DefaultProvidedInterface(
-                               "name", MyMultiple.class);
+               ProvidedInterface prov1 = new DefaultProvidedInterface("name",
+                               Runnable.class);
+               ProvidedInterface prov2 = new DefaultProvidedInterface("name",
+                               Serializable.class);
+               ProvidedInterface prov3 = new DefaultProvidedInterface("name",
+                               MyMultiple.class);
 
                AssertionUtils.assertEquals(new RequiredInterface[] { req1 },
                                SystemAssembler.filterRequiredServices(prov1, Arrays
@@ -57,19 +61,19 @@ public class SystemAssemblerTest extends TestCase {
        }
 
        public void testEnvironmentApplication() {
-               Component environment = new Environment();
-               Component application = new Application();
+               Component environment = new Environment(_tracker);
+               Component application = new Application(_tracker);
                SystemAssembler assembler = new SystemAssembler(new Component[] {
                                environment, application }, new ProvidedInterface[0]);
                assembler.start();
+               AssertionUtils.assertEquals(new String[] { "start.environment",
+                               "start.application" }, _tracker.getEvents(
+                               Thread.currentThread()).toArray(new String[0]));
                ProvidedInterface[] envServices = environment.getRunningServices();
                assertEquals(2, envServices.length);
                ProvidedInterface[] appServices = environment.getRunningServices();
                assertEquals(2, appServices.length);
-
-               // TODO test stopping!!!!!!
-               environment.stop();
-               application.stop();
+               
        }
 
        public void testApplicationEnvironment() {
@@ -87,10 +91,12 @@ public class SystemAssemblerTest extends TestCase {
        }
 
        public void testComposite() {
-               Component environment = new Environment();
-               Component application = new Application();
+               Component environment = new Environment(_tracker);
+               Component application = new Application(_tracker);
+               assertEquals(0, _tracker.getEventCount());
                assertEquals(Status.NOT_STARTED, environment.getStatus());
                assertEquals(Status.NOT_STARTED, application.getStatus());
+               
                Container system = new Container("all", new Component[] { environment,
                                application }, new ProvidedInterface[0],
                                new RequiredInterface[0]);
@@ -103,20 +109,30 @@ public class SystemAssemblerTest extends TestCase {
                assertEquals(Status.RUNNING, environment.getStatus());
                assertEquals(Status.RUNNING, application.getStatus());
                assertEquals(Status.RUNNING, system.getStatus());
-
+               
+               AssertionUtils.assertEquals(
+                               new String[] { "start.environment", "start.application" }, 
+                               _tracker.getEvents(Thread.currentThread()).toArray(new String[0]));
+        _tracker.clear();
+               
                system.stop();
                assertEquals(Status.STOPPED, environment.getStatus());
                assertEquals(Status.STOPPED, application.getStatus());
                assertEquals(Status.STOPPED, system.getStatus());
+               
+               AssertionUtils.assertEquals(
+                               new String[] { "stop.application", "stop.environment" }, 
+                               _tracker.getEvents(Thread.currentThread()).toArray(new String[0]));
+      
+               
        }
 
        public void testCompositeWithWrongProvidedInfo() {
                try {
                        Component environment = new Environment();
                        Component application = new Application();
-                       Container system = new Container(
-                                       "all",
-                                       new Component[] { environment, application },
+                       Container system = new Container("all", new Component[] {
+                                       environment, application },
                                        new ProvidedInterface[] { new DefaultProvidedInterface(
                                                        "string", String.class) },
                                        new DefaultRequiredInterface[0]);
@@ -130,10 +146,8 @@ public class SystemAssemblerTest extends TestCase {
                try {
                        Component environment = new Environment();
                        Component application = new Application();
-                       Container system = new Container(
-                                       "all",
-                                       new Component[] { environment, application },
-                                       new ProvidedInterface[0],
+                       Container system = new Container("all", new Component[] {
+                                       environment, application }, new ProvidedInterface[0],
                                        new RequiredInterface[] { new DefaultRequiredInterface(
                                                        "string", String.class) });
                        system.start("root");
@@ -146,14 +160,12 @@ public class SystemAssemblerTest extends TestCase {
        public void testCompositeWithSuperfluousRequiredInfo() {
                Component environment = new Environment();
                Component application = new Application();
-               Container system = new Container(
-                               "all",
-                               new Component[] { environment, application },
-                               new ProvidedInterface[0],
+               Container system = new Container("all", new Component[] { environment,
+                               application }, new ProvidedInterface[0],
                                new RequiredInterface[] { new DefaultRequiredInterface(
                                                "string", String.class) });
-               system.getRequiredServices()[0].setProvider(
-                               new DefaultProvidedInterface("hallo", String.class));
+               system.getRequiredServices()[0]
+                               .setProvider(new DefaultProvidedInterface("hallo", String.class));
                system.start("root");
                RequiredInterface[] required = system.getRequiredServices();
                assertEquals(1, required.length);
@@ -184,9 +196,11 @@ public class SystemAssemblerTest extends TestCase {
                                new Component[] { application }, new ProvidedInterface[0],
                                application.getRequiredServices());
                environment.start("env");
-               system.getRequiredServices()[0].setProvider(environment.getProvidedServices()[0]);
-               system.getRequiredServices()[1].setProvider(environment.getProvidedServices()[1]);
-               
+               system.getRequiredServices()[0].setProvider(environment
+                               .getProvidedServices()[0]);
+               system.getRequiredServices()[1].setProvider(environment
+                               .getProvidedServices()[1]);
+
                system.start("root");
                RequiredInterface[] required = system.getRequiredServices();
                assertEquals(2, required.length);