/core/test/com/google/inject/ModulesTest.java
Java | 80 lines | 50 code | 9 blank | 21 comment | 0 complexity | 3c9831ecacd7c170af903f89b12bef6c MD5 | raw file
- /**
- * Copyright (C) 2008 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.google.inject;
- import com.google.common.collect.ImmutableList;
- import com.google.inject.spi.ElementSource;
- import com.google.inject.util.Modules;
- import junit.framework.TestCase;
- import java.util.Arrays;
- /**
- * @author jessewilson@google.com (Jesse Wilson)
- */
- public class ModulesTest extends TestCase {
- public void testCombineVarargs() {
- Module combined = Modules.combine(newModule(1), newModule(2L), newModule((short) 3));
- Injector injector = Guice.createInjector(combined);
- assertEquals(1, injector.getInstance(Integer.class).intValue());
- assertEquals(2L, injector.getInstance(Long.class).longValue());
- assertEquals(3, injector.getInstance(Short.class).shortValue());
- }
-
- public void testCombineIterable() {
- Iterable<Module> modules = Arrays.asList(newModule(1), newModule(2L), newModule((short) 3));
- Injector injector = Guice.createInjector(Modules.combine(modules));
- assertEquals(1, injector.getInstance(Integer.class).intValue());
- assertEquals(2, injector.getInstance(Long.class).longValue());
- assertEquals(3, injector.getInstance(Short.class).shortValue());
- }
- /**
- * The module returned by Modules.combine shouldn't show up in binder sources.
- */
- public void testCombineSources() {
- final Module m1 = newModule(1);
- final Module m2 = newModule(2L);
- final Module combined1 = Modules.combine(m1, m2);
- Module skipSourcesModule = new AbstractModule() {
- @Override protected void configure() {
- install(combined1);
- }
- };
- final Module combined2 = Modules.combine(skipSourcesModule);
- Injector injector = Guice.createInjector(combined2);
- ElementSource source = (ElementSource) injector.getBinding(Integer.class).getSource();
- assertEquals(source.getModuleClassNames().size(), 4);
- assertEquals(ImmutableList.of(m1.getClass().getName(),
- combined1.getClass().getName(), skipSourcesModule.getClass().getName(),
- combined2.getClass().getName()), source.getModuleClassNames());
- StackTraceElement stackTraceElement = (StackTraceElement) source.getDeclaringSource();
- assertEquals(skipSourcesModule.getClass().getName(), stackTraceElement.getClassName());
- }
- private <T> Module newModule(final T toBind) {
- return new AbstractModule() {
- protected void configure() {
- @SuppressWarnings("unchecked") // getClass always needs a cast
- Class<T> tClass = (Class<T>) toBind.getClass();
- binder().skipSources(getClass()).bind(tClass).toInstance(toBind);
- }
- };
- }
- }