package triaina.test.injector;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import triaina.injector.AbstractTriainaModule;
import triaina.injector.binder.BinderContainer;
import triaina.injector.binder.DynamicBinder;
import com.google.inject.Binder;
import com.google.inject.Key;
import com.google.inject.MembersInjector;
import com.google.inject.Module;
import com.google.inject.PrivateBinder;
import com.google.inject.Provider;
import com.google.inject.Scope;
import com.google.inject.Stage;
import com.google.inject.TypeLiteral;
import com.google.inject.binder.AnnotatedBindingBuilder;
import com.google.inject.binder.AnnotatedConstantBindingBuilder;
import com.google.inject.binder.LinkedBindingBuilder;
import com.google.inject.matcher.Matcher;
import com.google.inject.spi.Message;
import com.google.inject.spi.TypeConverter;
import com.google.inject.spi.TypeListener;
import junit.framework.TestCase;
public class AbstractTriainaModuleTest extends TestCase {
static class MockBinder implements Binder {
@Override
public void bindScope(Class<? extends Annotation> annotationType,
Scope scope) {
// TODO Auto-generated method stub
}
@Override
public <T> LinkedBindingBuilder<T> bind(Key<T> key) {
// TODO Auto-generated method stub
return null;
}
@Override
public <T> AnnotatedBindingBuilder<T> bind(TypeLiteral<T> typeLiteral) {
// TODO Auto-generated method stub
return null;
}
@Override
public <T> AnnotatedBindingBuilder<T> bind(Class<T> type) {
// TODO Auto-generated method stub
return null;
}
@Override
public AnnotatedConstantBindingBuilder bindConstant() {
// TODO Auto-generated method stub
return null;
}
@Override
public Stage currentStage() {
// TODO Auto-generated method stub
return null;
}
@Override
public void addError(String message, Object... arguments) {
// TODO Auto-generated method stub
}
@Override
public void addError(Throwable t) {
// TODO Auto-generated method stub
}
@Override
public void addError(Message message) {
// TODO Auto-generated method stub
}
@Override
public void convertToTypes(Matcher<? super TypeLiteral<?>> typeMatcher,
TypeConverter converter) {
// TODO Auto-generated method stub
}
@Override
public void bindListener(Matcher<? super TypeLiteral<?>> typeMatcher,
TypeListener listener) {
// TODO Auto-generated method stub
}
@Override
public void disableCircularProxies() {
// TODO Auto-generated method stub
}
@Override
public <T> void requestInjection(TypeLiteral<T> type, T instance) {
// TODO Auto-generated method stub
}
@Override
public void requestInjection(Object instance) {
// TODO Auto-generated method stub
}
@Override
public void requestStaticInjection(Class<?>... types) {
// TODO Auto-generated method stub
}
@Override
public void install(Module module) {
// TODO Auto-generated method stub
}
@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;
}
@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 PrivateBinder newPrivateBinder() {
// TODO Auto-generated method stub
return null;
}
@Override
public void requireExplicitBindings() {
// TODO Auto-generated method stub
}
@Override
public Binder withSource(Object source) {
// TODO Auto-generated method stub
return null;
}
@Override
public Binder skipSources(@SuppressWarnings("rawtypes") Class... classesToSkip) {
// TODO Auto-generated method stub
return null;
}
}
public void testDefineStringString() {
AbstractTriainaModule module = new AbstractTriainaModule() {
@Override
protected void configure() {
define("AAA", "aaa").bind(List.class).to(ArrayList.class);
define("AAA", "bbb").bind(List.class).to(LinkedList.class);
}
};
module.configure(new MockBinder());
List<DynamicBinder> list = BinderContainer.get(List.class);
assertEquals(2, list.size());
assertEquals("AAA", list.get(0).getName());
assertEquals("AAA", list.get(1).getName());
}
}