| // Copyright 2007 Google Inc. All Rights Reserved. |
| |
| package com.google.inject; |
| |
| import junit.framework.TestCase; |
| |
| /** |
| * Tests relating to modules. |
| * |
| * @author kevinb |
| */ |
| public class ModuleTest extends TestCase { |
| |
| static class A implements Module { |
| @Override |
| public void configure(Binder binder) { |
| binder.bind(X.class); |
| binder.install(new B()); |
| binder.install(new C()); |
| } |
| } |
| |
| static class B implements Module { |
| @Override |
| public void configure(Binder binder) { |
| binder.bind(Y.class); |
| binder.install(new D()); |
| } |
| } |
| |
| static class C implements Module { |
| @Override |
| public void configure(Binder binder) { |
| binder.bind(Z.class); |
| binder.install(new D()); |
| } |
| } |
| |
| static class D implements Module { |
| @Override |
| public void configure(Binder binder) { |
| binder.bind(W.class); |
| } |
| |
| @Override |
| public boolean equals(Object obj) { |
| return obj.getClass() == D.class; // we're all equal in the eyes of guice |
| } |
| |
| @Override |
| public int hashCode() { |
| return D.class.hashCode(); |
| } |
| } |
| |
| static class X {} |
| |
| static class Y {} |
| |
| static class Z {} |
| |
| static class W {} |
| |
| public void testDiamond() throws Exception { |
| Guice.createInjector(new A()); |
| } |
| } |