package org.wamblee.system.core;
import java.io.Serializable;
-import java.util.ArrayList;
import java.util.Arrays;
+import junit.framework.TestCase;
+
import org.easymock.classextension.ConstructorArgs;
import org.easymock.classextension.EasyMock;
import org.easymock.classextension.IMocksControl;
-import org.wamblee.system.core.Component;
-import org.wamblee.system.core.Container;
-import org.wamblee.system.core.DefaultProvidedInterface;
-import org.wamblee.system.core.DefaultRequiredInterface;
-import org.wamblee.system.core.ProvidedInterface;
-import org.wamblee.system.core.RequiredInterface;
-import org.wamblee.system.core.SystemAssemblyException;
-import org.wamblee.system.core.Component.Status;
import org.wamblee.test.AssertionUtils;
import org.wamblee.test.EventTracker;
-import junit.framework.TestCase;
-
public class ContainerTest extends TestCase {
private EventTracker<String> _tracker;
}
public void testEnvironmentApplication() {
- Component environment = new Environment(_tracker);
- Component application = new Application(_tracker);
+ Environment environment = new Environment(_tracker);
+ Application application = new Application(_tracker);
Container container = new Container("root", new Component[] {
environment, application }, new ProvidedInterface[0],
new RequiredInterface[0]);
assertEquals(2, envServices.length);
ProvidedInterface[] appServices = application.getRunningInterfaces();
assertEquals(0, appServices.length);
+
+ assertEquals(environment.getString(), application.getString());
+ assertEquals(environment.getInteger(), application.getInteger());
}
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]);
- assertEquals(Status.NOT_STARTED, system.getStatus());
system.start();
RequiredInterface[] required = system.getRequiredInterfaces();
assertEquals(0, required.length);
ProvidedInterface[] provided = system.getProvidedInterfaces();
assertEquals(0, provided.length);
- 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(
_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]));
Container system = new Container("all", new Component[] {
environment, application },
new ProvidedInterface[] { new DefaultProvidedInterface(
- "string", String.class) },
+ "float", Float.class) },
new DefaultRequiredInterface[0]);
} catch (SystemAssemblyException e) {
return;
Container system = new Container("all", new Component[] { environment,
application }, new ProvidedInterface[0],
new RequiredInterface[] { new DefaultRequiredInterface(
- "string", String.class) });
+ "float", Float.class) });
system.getRequiredInterfaces()[0]
- .setProvider(new DefaultProvidedInterface("hallo", String.class));
+ .setProvider(new DefaultProvidedInterface("hallo", Float.class));
system.start();
RequiredInterface[] required = system.getRequiredInterfaces();
assertEquals(1, required.length);
Thread.currentThread()).toArray(new String[0]));
ProvidedInterface[] envServices = environment.getRunningInterfaces();
assertEquals(0, envServices.length);
+ assertNull(environment.getProvidedInterfaces()[0].getImplementation());
+ assertNull(environment.getProvidedInterfaces()[0].getImplementation());
return;
}
fail();
Thread.currentThread()).toArray(new String[0]));
ProvidedInterface[] envServices = environment.getRunningInterfaces();
assertEquals(0, envServices.length);
+ assertNull(environment.getProvidedInterfaces()[0].getImplementation());
+ assertNull(environment.getProvidedInterfaces()[0].getImplementation());
return;
}
fail();
}
+
+ public void testOptionalRequiredInterfaceProvidedOptionalInternal() {
+ Application application = new Application(true);
+ Container container = new Container("top", new Component[] { application },
+ new ProvidedInterface[0], Application.required(true));
+ Environment env = new Environment();
+ container.getRequiredInterfaces()[0].setProvider(
+ env.getProvidedInterfaces()[0]);
+ container.getRequiredInterfaces()[1].setProvider(
+ env.getProvidedInterfaces()[1]);
+ container.start();
+ assertSame(env.getProvidedInterfaces()[0], container.getRequiredInterfaces()[0].getProvider());
+ assertSame(env.getProvidedInterfaces()[1], container.getRequiredInterfaces()[1].getProvider());
+ assertSame(env.getProvidedInterfaces()[0], application.getRequiredInterfaces()[0].getProvider());
+ assertSame(env.getProvidedInterfaces()[1], application.getRequiredInterfaces()[1].getProvider());
+ }
+
+ public void testOptionalRequiredInterfaceNotProvidedOptionalInternal() {
+ Application application = new Application(true);
+ Container container = new Container("top", new Component[] { application },
+ new ProvidedInterface[0], Application.required(true));
+ Environment env = new Environment();
+ container.getRequiredInterfaces()[0].setProvider(
+ env.getProvidedInterfaces()[0]);
+ container.start();
+ assertSame(env.getProvidedInterfaces()[0], container.getRequiredInterfaces()[0].getProvider());
+ assertNull(container.getRequiredInterfaces()[1].getProvider());
+ assertSame(env.getProvidedInterfaces()[0], application.getRequiredInterfaces()[0].getProvider());
+ assertNull(application.getRequiredInterfaces()[1].getProvider());
+ }
+
+ public void testOptionalRequiredInterfaceProvidedMandatoryInternal() {
+ Application application = new Application();
+ Container container = new Container("top", new Component[] { application },
+ new ProvidedInterface[0], Application.required(true));
+ Environment env = new Environment();
+ container.getRequiredInterfaces()[0].setProvider(
+ env.getProvidedInterfaces()[0]);
+ container.getRequiredInterfaces()[1].setProvider(
+ env.getProvidedInterfaces()[1]);
+ container.start();
+ assertSame(env.getProvidedInterfaces()[0], container.getRequiredInterfaces()[0].getProvider());
+ assertSame(env.getProvidedInterfaces()[1], container.getRequiredInterfaces()[1].getProvider());
+ assertSame(env.getProvidedInterfaces()[0], application.getRequiredInterfaces()[0].getProvider());
+ assertSame(env.getProvidedInterfaces()[1], application.getRequiredInterfaces()[1].getProvider());
+ }
}