+ _tracker = new EventTracker<String>();
+ }
+
+ private static class MyMultiple implements Serializable, Runnable {
+ @Override
+ public void run() {
+ // Empty
+ }
+ }
+
+ public void testFilterProvided() {
+ RequiredInterface req1 = new DefaultRequiredInterface("name",
+ Runnable.class);
+ RequiredInterface req2 = new DefaultRequiredInterface("name",
+ Serializable.class);
+ ProvidedInterface prov1 = new DefaultProvidedInterface("name",
+ Runnable.class);
+ ProvidedInterface prov2 = new DefaultProvidedInterface("name",
+ Serializable.class);
+ ProvidedInterface prov3 = new DefaultProvidedInterface("name",
+ MyMultiple.class);
+
+ AssertionUtils.assertEquals(new RequiredInterface[] { req1 },
+ SystemAssembler.filterRequiredServices(prov1, Arrays
+ .asList(new RequiredInterface[] { req1 })));
+ AssertionUtils.assertEquals(new RequiredInterface[] { req1 },
+ SystemAssembler.filterRequiredServices(prov1, Arrays
+ .asList(new RequiredInterface[] { req1, req2 })));
+ AssertionUtils.assertEquals(new RequiredInterface[] { req1, req2 },
+ SystemAssembler.filterRequiredServices(prov3, Arrays
+ .asList(new RequiredInterface[] { req1, req2 })));
+
+ AssertionUtils.assertEquals(new ProvidedInterface[] { prov1 },
+ SystemAssembler.filterProvidedServices(req1, Arrays
+ .asList(new ProvidedInterface[] { prov1 })));
+ AssertionUtils.assertEquals(new ProvidedInterface[] { prov1 },
+ SystemAssembler.filterProvidedServices(req1, Arrays
+ .asList(new ProvidedInterface[] { prov1, prov2 })));
+ AssertionUtils.assertEquals(new ProvidedInterface[] { prov1, prov3 },
+ SystemAssembler.filterProvidedServices(req1, Arrays
+ .asList(new ProvidedInterface[] { prov1, prov3 })));