MCPcopy Create free account
hub / github.com/google/guice / DuplicateBindingsTest

Class DuplicateBindingsTest

core/test/com/google/inject/DuplicateBindingsTest.java:43–656  ·  view source on GitHub ↗

A suite of tests for duplicate bindings. @author sameb@google.com (Sam Berlin)

Source from the content-addressed store, hash-verified

41 * @author sameb@google.com (Sam Berlin)
42 */
43public class DuplicateBindingsTest extends TestCase {
44
45 private FooImpl foo = new FooImpl();
46 private Provider<Foo> pFoo = Providers.<Foo>of(new FooImpl());
47 private Class<? extends Provider<? extends Foo>> pclFoo = FooProvider.class;
48 private Class<? extends Foo> clFoo = FooImpl.class;
49 private Constructor<FooImpl> cFoo = FooImpl.cxtor();
50
51 public void testDuplicateBindingsAreIgnored() {
52 Injector injector =
53 Guice.createInjector(
54 new SimpleModule(foo, pFoo, pclFoo, clFoo, cFoo),
55 new SimpleModule(foo, pFoo, pclFoo, clFoo, cFoo));
56 List<Key<?>> bindings = Lists.newArrayList(injector.getAllBindings().keySet());
57 removeBasicBindings(bindings);
58
59 // Ensure only one binding existed for each type.
60 assertTrue(bindings.remove(Key.get(Foo.class, named("instance"))));
61 assertTrue(bindings.remove(Key.get(Foo.class, named("pInstance"))));
62 assertTrue(bindings.remove(Key.get(Foo.class, named("pKey"))));
63 assertTrue(bindings.remove(Key.get(Foo.class, named("linkedKey"))));
64 assertTrue(bindings.remove(Key.get(FooImpl.class)));
65 assertTrue(bindings.remove(Key.get(Foo.class, named("constructor"))));
66 assertTrue(bindings.remove(Key.get(FooProvider.class))); // JIT binding
67 assertTrue(bindings.remove(Key.get(Foo.class, named("providerMethod"))));
68
69 assertEquals(bindings.toString(), 0, bindings.size());
70 }
71
72 public void testElementsDeduplicate() {
73 List<Element> elements =
74 Elements.getElements(
75 new SimpleModule(foo, pFoo, pclFoo, clFoo, cFoo),
76 new SimpleModule(foo, pFoo, pclFoo, clFoo, cFoo));
77 assertEquals(14, elements.size());
78 assertEquals(7, new LinkedHashSet<Element>(elements).size());
79 }
80
81 public void testProviderMethodsFailIfInstancesDiffer() {
82 try {
83 Guice.createInjector(new FailingProviderModule(), new FailingProviderModule());
84 fail("should have failed");
85 } catch (CreationException ce) {
86 assertContains(
87 ce.getMessage(),
88 "DuplicateBindingsTest$Foo was bound multiple times.",
89 "1 : DuplicateBindingsTest$FailingProviderModule.foo",
90 "2 : DuplicateBindingsTest$FailingProviderModule.foo");
91 }
92 }
93
94 public void testSameScopeInstanceIgnored() {
95 Guice.createInjector(
96 new ScopedModule(Scopes.SINGLETON, foo, pFoo, pclFoo, clFoo, cFoo),
97 new ScopedModule(Scopes.SINGLETON, foo, pFoo, pclFoo, clFoo, cFoo));
98
99 Guice.createInjector(
100 new ScopedModule(Scopes.NO_SCOPE, foo, pFoo, pclFoo, clFoo, cFoo),

Callers

nothing calls this directly

Calls 2

ofMethod · 0.95
cxtorMethod · 0.95

Tested by

no test coverage detected