package proton.inject.listener; import java.lang.annotation.Annotation; import javax.inject.Inject; import proton.inject.DefaultModule; import proton.inject.Injector; import proton.inject.MockContext; import proton.inject.Proton; import proton.inject.scope.ContextScoped; import android.app.Application; import android.test.AndroidTestCase; import android.test.mock.MockApplication; public class ProviderListenerTest extends AndroidTestCase implements ProviderListener { 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(); bindProviderListener(ProviderListenerTest.this); bind(Aaa.class); } }); mInjector = Proton.getInjector(new MockContext(mMockApplication)); } @Override protected void tearDown() throws Exception { mHandleInjector = null; mHandleInstance = null; Proton.destroy(); super.tearDown(); } public void testInject() { Client c = mInjector.inject(new Client()); assertNotNull(mHandleInstance); assertEquals(mInjector, mHandleInjector); assertEquals(mHandleInstance, c.aaa); assertEquals(ContextScoped.class, mHandleScope); } private Injector mHandleInjector; private Object mHandleInstance; private Class<? extends Annotation> mHandleScope; @Override public void onCreateInstance(Injector injector, Object instance, Class<? extends Annotation> scope) { mHandleInjector = injector; mHandleInstance = instance; mHandleScope = scope; } public static class Client { @Inject private Aaa aaa; } public static class Aaa { } }