Home | History | Annotate | Download | only in inject
      1 // Copyright 2007 Google Inc. All Rights Reserved.
      2 
      3 package com.google.inject;
      4 
      5 import junit.framework.TestCase;
      6 
      7 /**
      8  * Tests relating to modules.
      9  *
     10  * @author kevinb
     11  */
     12 public class ModuleTest extends TestCase {
     13 
     14   static class A implements Module {
     15     @Override
     16     public void configure(Binder binder) {
     17       binder.bind(X.class);
     18       binder.install(new B());
     19       binder.install(new C());
     20     }
     21   }
     22 
     23   static class B implements Module {
     24     @Override
     25     public void configure(Binder binder) {
     26       binder.bind(Y.class);
     27       binder.install(new D());
     28     }
     29   }
     30 
     31   static class C implements Module {
     32     @Override
     33     public void configure(Binder binder) {
     34       binder.bind(Z.class);
     35       binder.install(new D());
     36     }
     37   }
     38 
     39   static class D implements Module {
     40     @Override
     41     public void configure(Binder binder) {
     42       binder.bind(W.class);
     43     }
     44 
     45     @Override
     46     public boolean equals(Object obj) {
     47       return obj.getClass() == D.class; // we're all equal in the eyes of guice
     48     }
     49 
     50     @Override
     51     public int hashCode() {
     52       return D.class.hashCode();
     53     }
     54   }
     55 
     56   static class X {}
     57 
     58   static class Y {}
     59 
     60   static class Z {}
     61 
     62   static class W {}
     63 
     64   public void testDiamond() throws Exception {
     65     Guice.createInjector(new A());
     66   }
     67 }
     68