@author sberlin@gmail.com (Sam Berlin)
| 55 | |
| 56 | /** @author sberlin@gmail.com (Sam Berlin) */ |
| 57 | public class OverrideModuleTest extends TestCase { |
| 58 | |
| 59 | private static final Key<String> key2 = Key.get(String.class, named("2")); |
| 60 | private static final Key<String> key3 = Key.get(String.class, named("3")); |
| 61 | |
| 62 | private static final Module EMPTY_MODULE = |
| 63 | new Module() { |
| 64 | @Override |
| 65 | public void configure(Binder binder) {} |
| 66 | }; |
| 67 | |
| 68 | public void testOverride() { |
| 69 | Injector injector = createInjector(Modules.override(newModule("A")).with(newModule("B"))); |
| 70 | assertEquals("B", injector.getInstance(String.class)); |
| 71 | } |
| 72 | |
| 73 | public void testOverrideMultiple() { |
| 74 | Module module = |
| 75 | Modules.override(newModule("A"), newModule(1), newModule(0.5f)) |
| 76 | .with(newModule("B"), newModule(2), newModule(1.5d)); |
| 77 | Injector injector = createInjector(module); |
| 78 | assertEquals("B", injector.getInstance(String.class)); |
| 79 | assertEquals(2, injector.getInstance(Integer.class).intValue()); |
| 80 | assertEquals(0.5f, injector.getInstance(Float.class), 0.0f); |
| 81 | assertEquals(1.5d, injector.getInstance(Double.class), 0.0); |
| 82 | } |
| 83 | |
| 84 | public void testOverrideUnmatchedTolerated() { |
| 85 | Injector injector = createInjector(Modules.override(EMPTY_MODULE).with(newModule("B"))); |
| 86 | assertEquals("B", injector.getInstance(String.class)); |
| 87 | } |
| 88 | |
| 89 | public void testOverrideConstant() { |
| 90 | Module original = |
| 91 | new AbstractModule() { |
| 92 | @Override |
| 93 | protected void configure() { |
| 94 | bindConstant().annotatedWith(named("Test")).to("A"); |
| 95 | } |
| 96 | }; |
| 97 | |
| 98 | Module replacements = |
| 99 | new AbstractModule() { |
| 100 | @Override |
| 101 | protected void configure() { |
| 102 | bindConstant().annotatedWith(named("Test")).to("B"); |
| 103 | } |
| 104 | }; |
| 105 | |
| 106 | Injector injector = createInjector(Modules.override(original).with(replacements)); |
| 107 | assertEquals("B", injector.getInstance(Key.get(String.class, named("Test")))); |
| 108 | } |
| 109 | |
| 110 | public void testGetProviderInModule() { |
| 111 | Module original = |
| 112 | new AbstractModule() { |
| 113 | @Override |
| 114 | protected void configure() { |