+ _registry = new DefaultServiceRegistry();
+ }
+
+ private static class MyMultiple implements Serializable, Runnable {
+ @Override
+ public void run() {
+ // Empty
+ }
+ }
+
+ public void testFilterProvided() {
+ RequiredInterfaceDescriptor req1 = new DefaultRequiredInterfaceDescriptor(
+ "name", Runnable.class);
+ RequiredInterfaceDescriptor req2 = new DefaultRequiredInterfaceDescriptor(
+ "name", Serializable.class);
+ ProvidedInterfaceDescriptor prov1 = new DefaultProvidedInterfaceDescriptor(
+ "name", Runnable.class);
+ ProvidedInterfaceDescriptor prov2 = new DefaultProvidedInterfaceDescriptor(
+ "name", Serializable.class);
+ ProvidedInterfaceDescriptor prov3 = new DefaultProvidedInterfaceDescriptor(
+ "name", MyMultiple.class);
+
+ AssertionUtils.assertEquals(new RequiredInterfaceDescriptor[] { req1 },
+ SystemAssembler.filterRequiredServices(prov1, Arrays
+ .asList(new RequiredInterfaceDescriptor[] { req1 })));
+ AssertionUtils.assertEquals(new RequiredInterfaceDescriptor[] { req1 },
+ SystemAssembler.filterRequiredServices(prov1,
+ Arrays.asList(new RequiredInterfaceDescriptor[] { req1,
+ req2 })));
+ AssertionUtils.assertEquals(new RequiredInterfaceDescriptor[] { req1,
+ req2 }, SystemAssembler.filterRequiredServices(prov3, Arrays
+ .asList(new RequiredInterfaceDescriptor[] { req1, req2 })));
+
+ AssertionUtils.assertEquals(
+ new ProvidedInterfaceDescriptor[] { prov1 },
+ SystemAssembler.filterProvidedServices(req1, Arrays
+ .asList(new ProvidedInterfaceDescriptor[] { prov1 })));
+ AssertionUtils.assertEquals(
+ new ProvidedInterfaceDescriptor[] { prov1 }, SystemAssembler
+ .filterProvidedServices(req1, Arrays
+ .asList(new ProvidedInterfaceDescriptor[] {
+ prov1, prov2 })));
+ AssertionUtils.assertEquals(new ProvidedInterfaceDescriptor[] { prov1,
+ prov3 }, SystemAssembler.filterProvidedServices(req1, Arrays
+ .asList(new ProvidedInterfaceDescriptor[] { prov1, prov3 })));