package proton.inject;
import javax.inject.Inject;
import android.app.Application;
import android.test.AndroidTestCase;
import android.test.mock.MockApplication;
public class ImplicitInjectionTest extends AndroidTestCase {
private Application mMockApplication;
private Injector mInjector;
@Override
protected void setUp() throws Exception {
super.setUp();
mMockApplication = new MockApplication();
Proton.initialize(mMockApplication, new DefaultModule() {
@Override
protected void configure() {
super.configure();
}
});
mInjector = Proton.getInjector(new MockContext(mMockApplication));
}
@Override
protected void tearDown() throws Exception {
Proton.destroy();
super.tearDown();
}
public void testInject() {
Client c = mInjector.inject(new Client());
assertNotNull(c.aaa);
}
public void testInstance() {
Client c = mInjector.getInstance(Client.class);
assertNotNull(c);
assertNotNull(c.aaa);
}
public void testInstanceWithIllegalInjection() {
try {
mInjector.getInstance(Bbb.class);
fail();
} catch (ProvisionException exp) {
}
}
public void testInjectWithIllegalInjection() {
try {
mInjector.inject(new IllegalImplicitInjectionClass());
fail();
} catch (ProvisionException exp) {
}
}
public static class Client {
@Inject
private Aaa aaa;
}
public static class Aaa {
}
public static class IllegalImplicitInjectionClass {
@SuppressWarnings("unused")
@Inject
private Bbb bbb;
}
public interface Bbb {
}
}