+
+ 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]);
+ Scope external = new DefaultScope(env.getProvidedInterfaces());
+ env.start(external);
+
+ container.start(external);
+ 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]);
+ Scope external = new DefaultScope(new ProvidedInterface[0]);
+ external.publishInterface(env.getProvidedInterfaces()[0], env.getString());
+ container.start(external);
+ 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());
+ }