diff options
author | cgruber <cgruber@google.com> | 2015-02-18 12:07:13 -0800 |
---|---|---|
committer | Sam Berlin <sameb@google.com> | 2015-02-24 18:28:17 -0500 |
commit | 0910c1e69ee2b0587f898cb292d4e9f8d9338e28 (patch) | |
tree | b118f4adc74131fa5eaae1d766d78944cfb3596e /extensions/dagger-adapter/test/com/google/inject/daggeradapter/DaggerAdapterTest.java | |
parent | 32780fa2a30bb10f7c85a0a43845308af7bcefdd (diff) | |
download | guice-0910c1e69ee2b0587f898cb292d4e9f8d9338e28.tar.gz |
Create a dagger/guice interoperability library, which permits (with limitations) the use of Dagger modules in Guice.
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=86617720
Diffstat (limited to 'extensions/dagger-adapter/test/com/google/inject/daggeradapter/DaggerAdapterTest.java')
-rw-r--r-- | extensions/dagger-adapter/test/com/google/inject/daggeradapter/DaggerAdapterTest.java | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/extensions/dagger-adapter/test/com/google/inject/daggeradapter/DaggerAdapterTest.java b/extensions/dagger-adapter/test/com/google/inject/daggeradapter/DaggerAdapterTest.java new file mode 100644 index 00000000..30e1d186 --- /dev/null +++ b/extensions/dagger-adapter/test/com/google/inject/daggeradapter/DaggerAdapterTest.java @@ -0,0 +1,99 @@ +/** + * Copyright (C) 2015 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.daggeradapter; + +import static dagger.Provides.Type.SET; + +import com.google.common.collect.ImmutableSet; +import com.google.inject.AbstractModule; +import com.google.inject.Binder; +import com.google.inject.Guice; +import com.google.inject.Injector; +import com.google.inject.Key; +import com.google.inject.Module; +import com.google.inject.Provides; +import com.google.inject.multibindings.Multibinder; +import com.google.inject.util.Providers; + +import junit.framework.TestCase; + +import java.util.Set; + +/** + * Tests for {@link DaggerAdapter}. + * + * @author cgruber@google.com (Christian Gruber) + */ + +public class DaggerAdapterTest extends TestCase { + @dagger.Module static class SimpleDaggerModule { + @dagger.Provides Integer anInteger() { + return 1; + } + } + + public void testSimpleModule() { + Injector i = Guice.createInjector(DaggerAdapter.from(new SimpleDaggerModule())); + assertEquals((Integer) 1, i.getInstance(Integer.class)); + } + + static class SimpleGuiceModule extends AbstractModule { + @Provides String aString(Integer i) { + return i.toString(); + } + @Override protected void configure() {} + } + + public void testInteractionWithGuiceModules() { + Injector i = Guice.createInjector( + new SimpleGuiceModule(), + DaggerAdapter.from(new SimpleDaggerModule())); + assertEquals("1", i.getInstance(String.class)); + } + + @dagger.Module static class SetBindingDaggerModule1 { + @dagger.Provides(type=SET) Integer anInteger() { + return 5; + } + } + + @dagger.Module static class SetBindingDaggerModule2 { + @dagger.Provides(type=SET) Integer anInteger() { + return 3; + } + } + + public void testSetBindings() { + Injector i = Guice.createInjector( + DaggerAdapter.from(new SetBindingDaggerModule1(), new SetBindingDaggerModule2())); + assertEquals(ImmutableSet.of(3, 5), i.getInstance(new Key<Set<Integer>>() {})); + } + + static class MultibindingGuiceModule implements Module { + @Override public void configure(Binder binder) { + Multibinder<Integer> mb = Multibinder.newSetBinder(binder, Integer.class); + mb.addBinding().toInstance(13); + mb.addBinding().toProvider(Providers.of(8)); // mix'n'match. + } + } + + public void testSetBindingsWithGuiceModule() { + Injector i = Guice.createInjector( + new MultibindingGuiceModule(), + DaggerAdapter.from(new SetBindingDaggerModule1(), new SetBindingDaggerModule2())); + assertEquals(ImmutableSet.of(13, 3, 5, 8), i.getInstance(new Key<Set<Integer>>() {})); + } +} |