package proton.inject; import javax.inject.Inject; import javax.inject.Provider; import android.app.Application; import android.test.AndroidTestCase; import android.test.mock.MockApplication; public class FieldInjectionTest 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).to(AaaImp.class); bind(Bbb.class).to(BbbImp.class); bind(Ccc.class).to(CccImp.class); } }); mInjector = Proton.getInjector(new MockContext(mMockApplication)); } @Override protected void tearDown() throws Exception { Proton.destroy(); super.tearDown(); } public void testInject() { Client obj = new Client(); mInjector.inject(obj); assertNotNull(obj.mAaa1); assertEquals(obj.mAaa1, obj.mAaa2); assertNotNull(((BbbImp) obj.mBbb).mCcc); assertNotNull(obj.mAaaProvider1); assertEquals(obj.mAaa1, obj.mAaaProvider1.get()); assertEquals(obj.mAaaProvider1, obj.mAaaProvider2); } public void testGetInstance() { Client obj = mInjector.getInstance(Client.class); assertNotNull(obj.mAaa1); assertNotNull(((BbbImp) obj.mBbb).mCcc); } public static class Client { @Inject private Aaa mAaa1; @Inject private Aaa mAaa2; @Inject private Bbb mBbb; @Inject private Provider<Aaa> mAaaProvider1; @Inject private Provider<Aaa> mAaaProvider2; } public interface Aaa { } public static class AaaImp implements Aaa { } public interface Bbb { } public static class BbbImp implements Bbb { @Inject private Ccc mCcc; } public interface Ccc { } public static class CccImp implements Ccc { } }