package proton.inject;
import javax.inject.Inject;
import javax.inject.Provider;
import proton.inject.scope.Dependent;
import android.app.Application;
import android.test.AndroidTestCase;
import android.test.mock.MockApplication;
public class DependentInjectionTest 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();
bind(Client.class);
bind(Aaa.class).in(Dependent.class);
}
});
mInjector = Proton.getInjector(new MockContext(mMockApplication));
}
@Override
protected void tearDown() throws Exception {
Proton.destroy();
super.tearDown();
}
public void testGetInstance() {
Client c = mInjector.getInstance(Client.class);
assertNotNull(c.aaa1);
assertNotSame(c.aaa1, mInjector.getInstance(Aaa.class));
assertNotSame(c.aaa1, c.aaa2);
}
public void testGetProvider() {
Provider<Aaa> p = mInjector.getProvider(Aaa.class);
assertNotNull(p);
assertNotSame(p, mInjector.getProvider(Aaa.class));
}
public void testInject() {
Client c = mInjector.inject(new Client());
assertNotNull(c.aaa1);
assertNotSame(c.aaa1, c.aaa2);
assertNotNull(c.aaaProvider1);
assertNotSame(c.aaaProvider1, c.aaaProvider2);
}
public static class Client {
@Inject
private Aaa aaa1;
@Inject
private Aaa aaa2;
@Inject
private Provider<Aaa> aaaProvider1;
@Inject
private Provider<Aaa> aaaProvider2;
}
public static class Aaa {
}
}