@Test
public void testFindProviders() throws Exception {

    BundleContext bc = EasyMock.createNiceMock(BundleContext.class);
    RepositoryServiceRepository rsr = new RepositoryServiceRepository(bc);
    @SuppressWarnings("unchecked")
    ServiceReference<Object> sr = EasyMock.createMock(ServiceReference.class);
    @SuppressWarnings("unchecked")
    ServiceReference<Object> sr2 = EasyMock.createMock(ServiceReference.class);
    @SuppressWarnings("unchecked")
    ServiceReference<Object> sr3 = EasyMock.createMock(ServiceReference.class);
    EasyMock.expect(bc.getAllServiceReferences("org.osgi.service.repository.Repository", null)).
        andReturn(new ServiceReference[] {sr, sr2, sr3}).anyTimes();
    TestRepository tr = new TestRepository();
    EasyMock.expect(bc.getService(sr)).andReturn(tr).anyTimes();
    ToastRepository tr2 = new ToastRepository();
    EasyMock.expect(bc.getService(sr2)).andReturn(tr2).anyTimes();
    Repository tr3 = Creator.create();
    EasyMock.expect(bc.getService(sr3)).andReturn(tr3).anyTimes();
    EasyMock.replay(bc);
    Map<String, String> dirs = Collections.singletonMap("filter", "(org.foo=bar)");
    Requirement req = new TestRequirement("org.foo", dirs);
    Collection<Capability> res = rsr.findProviders(req);
    assertEquals(1, res.size());
    Capability cap = res.iterator().next();
    assertEquals("org.foo", cap.getNamespace());
    assertEquals(1, cap.getAttributes().size());
    assertEquals("bar", cap.getAttributes().get("org.foo"));
    Map<String, String> dirs2 = Collections.singletonMap("filter", "(org.foo=b)");
    Requirement req2 = new TestRequirement("poing", dirs2);
    Collection<Capability> res2 = rsr.findProviders(req2);
    assertEquals(1, res2.size());
    Capability cap2 = res2.iterator().next();
    assertEquals("poing", cap2.getNamespace());
    assertEquals(1, cap2.getAttributes().size());
    assertEquals("b", cap2.getAttributes().get("org.foo"));
    Map<String, String> dirs3 = Collections.singletonMap("filter", "(x=y)");
    Requirement req3 = new TestRequirement("ns1", dirs3);
    Collection<Capability> res3 = rsr.findProviders(req3);
    assertEquals(1, res3.size());
    Capability cap3 = res3.iterator().next();
    assertEquals("ns1", cap3.getNamespace());
    assertEquals(1, cap3.getAttributes().size());
    assertEquals("y", cap3.getAttributes().get("x"));
}