X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsystem%2FSystemAssemblerTest.java;h=2dba056e63197879c35e4e9e30a96c70b0516843;hb=b6364aebdb15bb0648e8db2030d8ad793e209af6;hp=1bd89ca5fb212765a7f5e78a016ed443c4f6a37f;hpb=16504cb35c59542f7817abfe3c852e9fedd870a3;p=utils diff --git a/system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java b/system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java index 1bd89ca5..2dba056e 100644 --- a/system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java +++ b/system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java @@ -1,33 +1,82 @@ package org.wamblee.system; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; + +import org.wamblee.test.AssertionUtils; + import junit.framework.TestCase; public class SystemAssemblerTest extends TestCase { - - private ServiceRegistry _registry; - + + private ServiceRegistry _registry; + @Override protected void setUp() throws Exception { super.setUp(); - _registry = new DefaultServiceRegistry(); + _registry = new DefaultServiceRegistry(); + } + + private static class MyMultiple implements Serializable, Runnable { + @Override + public void run() { + // Empty + } + } + + public void testFilterProvided() { + RequiredServiceDescriptor req1 = new DefaultRequiredServiceDescriptor( + "name", Runnable.class); + RequiredServiceDescriptor req2 = new DefaultRequiredServiceDescriptor( + "name", Serializable.class); + ProvidedServiceDescriptor prov1 = new DefaultProvidedServiceDescriptor( + "name", Runnable.class); + ProvidedServiceDescriptor prov2 = new DefaultProvidedServiceDescriptor( + "name", Serializable.class); + ProvidedServiceDescriptor prov3 = new DefaultProvidedServiceDescriptor( + "name", MyMultiple.class); + + AssertionUtils.assertEquals(new RequiredServiceDescriptor[] { req1 }, + SystemAssembler.filterRequiredServices(prov1, Arrays + .asList(new RequiredServiceDescriptor[] { req1 }))); + AssertionUtils.assertEquals(new RequiredServiceDescriptor[] { req1 }, + SystemAssembler + .filterRequiredServices(prov1, Arrays + .asList(new RequiredServiceDescriptor[] { req1, + req2 }))); + AssertionUtils.assertEquals(new RequiredServiceDescriptor[] { req1, + req2 }, SystemAssembler.filterRequiredServices(prov3, Arrays + .asList(new RequiredServiceDescriptor[] { req1, req2 }))); + + AssertionUtils.assertEquals(new ProvidedServiceDescriptor[] { prov1 }, + SystemAssembler.filterProvidedServices(req1, Arrays + .asList(new ProvidedServiceDescriptor[] { prov1 }))); + AssertionUtils.assertEquals(new ProvidedServiceDescriptor[] { prov1 }, + SystemAssembler.filterProvidedServices(req1, + Arrays.asList(new ProvidedServiceDescriptor[] { prov1, + prov2 }))); + AssertionUtils.assertEquals(new ProvidedServiceDescriptor[] { prov1, + prov3 }, SystemAssembler.filterProvidedServices(req1, Arrays + .asList(new ProvidedServiceDescriptor[] { prov1, prov3 }))); } public void testEnvironmentApplication() { SubSystem environment = new Environment(_registry); SubSystem application = new Application(_registry); SystemAssembler assembler = new SystemAssembler(new SubSystem[] { - environment, application }, new ServiceDescriptor[0]); + environment, application }, new ProvidedServiceDescriptor[0]); assembler.start(_registry, new Service[0]); Service[] envServices = environment.getRunningServices(); assertEquals(2, envServices.length); Service[] appServices = environment.getRunningServices(); assertEquals(2, appServices.length); assertEquals(2, _registry.listAllServices().length); - + environment.stop(); assertEquals(0, _registry.listAllServices().length); - - application.stop(); + + application.stop(); assertEquals(0, _registry.listAllServices().length); } @@ -36,7 +85,8 @@ public class SystemAssemblerTest extends TestCase { SubSystem environment = new Environment(_registry); SubSystem application = new Application(_registry); SystemAssembler assembler = new SystemAssembler(new SubSystem[] { - application, environment }, new ServiceDescriptor[0]); + application, environment }, + new ProvidedServiceDescriptor[0]); assembler.start(_registry, new Service[0]); } catch (SystemAssemblyException e) { // e.printStackTrace(); @@ -48,9 +98,9 @@ public class SystemAssemblerTest extends TestCase { public void testComposite() { SubSystem environment = new Environment(_registry); SubSystem application = new Application(_registry); - CompositeSystem system = new CompositeSystem("all", _registry, new SubSystem[] { - environment, application }, new ServiceDescriptor[0], - new ServiceDescriptor[0]); + CompositeSystem system = new CompositeSystem("all", _registry, + new SubSystem[] { environment, application }, + new ServiceDescriptor[0], new ServiceDescriptor[0]); system.start("root", new Service[0]); ServiceDescriptor[] required = system.getRequiredServices(); assertEquals(0, required.length); @@ -62,10 +112,13 @@ public class SystemAssemblerTest extends TestCase { try { SubSystem environment = new Environment(_registry); SubSystem application = new Application(_registry); - CompositeSystem system = new CompositeSystem("all", _registry, + CompositeSystem system = new CompositeSystem( + "all", + _registry, new SubSystem[] { environment, application }, - new ServiceDescriptor[] { new DefaultServiceDescriptor( - String.class) }, new ServiceDescriptor[0]); + new ServiceDescriptor[] { new DefaultProvidedServiceDescriptor( + "string", String.class) }, + new DefaultRequiredServiceDescriptor[0]); } catch (SystemAssemblyException e) { return; } @@ -75,10 +128,11 @@ public class SystemAssemblerTest extends TestCase { public void testCompositeWithSuperfluousRequiredInfo() { SubSystem environment = new Environment(_registry); SubSystem application = new Application(_registry); - CompositeSystem system = new CompositeSystem("all", _registry,new SubSystem[] { - environment, application }, new ServiceDescriptor[0], - new ServiceDescriptor[] { new DefaultServiceDescriptor( - String.class) }); + CompositeSystem system = new CompositeSystem("all", _registry, + new SubSystem[] { environment, application }, + new ServiceDescriptor[0], + new ServiceDescriptor[] { new DefaultRequiredServiceDescriptor( + "string", String.class) }); system.start("root", new Service[0]); ServiceDescriptor[] required = system.getRequiredServices(); assertEquals(1, required.length); @@ -117,4 +171,19 @@ public class SystemAssemblerTest extends TestCase { } + public void testAmbiguousInterfaces() { + try { + SubSystem environment1 = new Environment(_registry); + SubSystem environment2 = new Environment(_registry); + SubSystem application = new Application(_registry); + SystemAssembler assembler = new SystemAssembler(new SubSystem[] { + environment1, environment2, application }, + new ProvidedServiceDescriptor[0]); + assembler.start(_registry, new Service[0]); + } catch (SystemAssemblyException e) { + return; + } + fail(); + } + }