package triaina.test.injector.internal; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import triaina.injector.TriainaEnvironment; import triaina.injector.binder.BinderContainer; import triaina.injector.binder.DynamicBinder; import triaina.injector.internal.DynamicMembersInjector; import com.google.inject.Binding; import com.google.inject.Injector; import com.google.inject.Key; import com.google.inject.MembersInjector; import com.google.inject.Module; import com.google.inject.Provider; import com.google.inject.Scope; import com.google.inject.TypeLiteral; import com.google.inject.spi.TypeConverterBinding; import junit.framework.TestCase; public class DynamicMembersInjectorTest extends TestCase { static class MockObject { public List<String> list; } public void testInjectMembers() throws Exception { DynamicBinder binder = new DynamicBinder("AAA", DynamicBinder.DEFAULT_VALUE); binder.bind(List.class); binder.to(ArrayList.class); BinderContainer.put(binder); Field field = MockObject.class.getField("list"); DynamicMembersInjector<MockObject> injector = new DynamicMembersInjector<MockObject>(field, new MockInjector()); MockObject m = new MockObject(); injector.injectMembers(m); assertEquals(ArrayList.class, m.list.getClass()); } static class MockInjector implements Injector { @Override public <T> MembersInjector<T> getMembersInjector( TypeLiteral<T> typeLiteral) { // TODO Auto-generated method stub return null; } @Override public <T> MembersInjector<T> getMembersInjector(Class<T> type) { // TODO Auto-generated method stub return null; } @Override public <T> List<Binding<T>> findBindingsByType(TypeLiteral<T> type) { // TODO Auto-generated method stub return null; } @Override public <T> Provider<T> getProvider(Key<T> key) { // TODO Auto-generated method stub return null; } @Override public <T> Provider<T> getProvider(Class<T> type) { // TODO Auto-generated method stub return null; } @SuppressWarnings("unchecked") @Override public <T> T getInstance(Class<T> type) { return (T) new TriainaEnvironment(); } @Override public Injector getParent() { // TODO Auto-generated method stub return null; } @Override public Injector createChildInjector(Iterable<? extends Module> modules) { // TODO Auto-generated method stub return null; } @Override public Injector createChildInjector(Module... modules) { // TODO Auto-generated method stub return null; } @Override public Map<Key<?>, Binding<?>> getAllBindings() { // TODO Auto-generated method stub return null; } @Override public Map<Key<?>, Binding<?>> getBindings() { // TODO Auto-generated method stub return null; } @Override public <T> Binding<T> getBinding(Key<T> key) { // TODO Auto-generated method stub return null; } @Override public <T> Binding<T> getBinding(Class<T> type) { // TODO Auto-generated method stub return null; } @Override public <T> Binding<T> getExistingBinding(Key<T> arg0) { // TODO Auto-generated method stub return null; } @Override public <T> T getInstance(Key<T> key) { // TODO Auto-generated method stub return null; } @Override public Map<Class<? extends Annotation>, Scope> getScopeBindings() { // TODO Auto-generated method stub return null; } @Override public Set<TypeConverterBinding> getTypeConverterBindings() { // TODO Auto-generated method stub return null; } @Override public void injectMembers(Object instance) { // TODO Auto-generated method stub } } }