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 ApplicationInjectionTest extends AndroidTestCase { private Application mMockApplication; private Injector mInjector; @Override protected void setUp() throws Exception { super.setUp(); mMockApplication = new MockApplication(); Proton.initialize(mMockApplication); mInjector = Proton.getInjector(new MockContext(mMockApplication)); } @Override protected void tearDown() throws Exception { Proton.destroy(); super.tearDown(); } public void testGetInstance() { assertEquals(mMockApplication, mInjector.getInstance(Application.class)); assertEquals(mMockApplication, Proton.getInjector(new MockContext(mMockApplication)).getInstance(Application.class)); } public void testGetProvider() { Provider<Application> provider1 = Proton.getInjector(new MockContext(mMockApplication)).getProvider( Application.class); Provider<Application> provider2 = Proton.getInjector(new MockContext(mMockApplication)).getProvider( Application.class); assertEquals(mMockApplication, provider1.get()); assertEquals(provider1, provider2); assertEquals(provider1.get(), provider2.get()); } public void testInject() { Client c = mInjector.inject(new Client()); assertEquals(c.aaa.application, mMockApplication); } @Dependent public static class Client { @Inject private Aaa aaa; } public static class Aaa { @Inject private Application application; } }