+ _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 })));