package aQute.bnd.testing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.osgi.framework.BundleActivator;
import org.osgi.service.log.LogService;
import aQute.bnd.annotation.component.Activate;
import aQute.bnd.annotation.component.Reference;
import junit.framework.TestCase;
public class DSTestWiringTest extends TestCase {
private LogService log;
private String string;
private A a;
private List<Integer> integers = new ArrayList<Integer>();
private int integer;
public static class A {
Map<String,Object> map;
@Activate
void activate(Map<String,Object> map) {
this.map = map;
}
}
public void testSimple() throws Exception {
BundleActivator act = mock(BundleActivator.class);
TestingLog testlog = new TestingLog().direct().stacktrace();
DSTestWiring ds = new DSTestWiring();
ds.add(this); // by instance
ds.add(act);
ds.add(testlog).$("filters", Arrays.asList("skip")); // instance
ds.add(String.class.getName()); // by name
ds.add(A.class).$("a", 1); // by class
ds.add(1);
ds.add(2);
ds.add(3);
ds.add(4);
ds.wire();
assertNotNull(log);
assertNotNull(string);
assertNotNull(a);
assertNotNull(a.map);
assertEquals(1, a.map.get("a"));
assertEquals(Arrays.asList(1, 2, 3, 4), integers);
assertEquals(1, integer);
ds.get(BundleActivator.class).start(null);
verify(act).start(null);
verifyNoMoreInteractions(act);
log.log(LogService.LOG_ERROR, "skip");
log.log(LogService.LOG_ERROR, "include");
assertEquals(1, testlog.getEntries().size());
assertFalse(testlog.check("include"));
}
@Reference
void setLog(LogService log) {
this.log = log;
}
@Reference
void setString(String s) {
this.string = s;
}
@Reference
void setA(A a) {
this.a = a;
}
@Reference(type = '*')
void addInteger(Integer i) {
integers.add(i);
}
@Reference
void setInteger(Integer i) {
integer = i;
}
}