summaryrefslogtreecommitdiffstats
path: root/container-di
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2019-10-24 12:06:41 +0200
committergjoranv <gv@verizonmedia.com>2019-10-24 12:06:41 +0200
commit3dc99c83b19793f72a3acc49b0c1580476ae754a (patch)
tree27c8722968ea50d19a1e5cae0300aaa7ca36d16c /container-di
parentd36f55c5e067ebe8e929a23f236f8498144e785f (diff)
Add unit test for component taking an interface.
Diffstat (limited to 'container-di')
-rw-r--r--container-di/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/container-di/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java b/container-di/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java
index 8d323233ef5..db150ba0599 100644
--- a/container-di/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java
+++ b/container-di/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java
@@ -105,6 +105,17 @@ public class ComponentGraphTest {
}
@Test
+ public void interface_implementation_can_be_injected() {
+ ComponentGraph componentGraph = new ComponentGraph();
+ componentGraph.add(mockComponentNode(ComponentImpl.class));
+ componentGraph.add(mockComponentNode(ComponentTakingInterface.class));
+ componentGraph.complete();
+
+ ComponentTakingInterface instance = componentGraph.getInstance(ComponentTakingInterface.class);
+ assertTrue(instance.injected instanceof ComponentImpl);
+ }
+
+ @Test
public void all_components_of_a_type_can_be_injected() {
ComponentGraph componentGraph = new ComponentGraph();
componentGraph.add(mockComponentNode(SimpleComponent.class));
@@ -474,6 +485,15 @@ public class ComponentGraphTest {
public static class SimpleDerivedComponent extends SimpleComponent {
}
+ public interface ComponentBase { }
+ public static class ComponentImpl implements ComponentBase { }
+ public static class ComponentTakingInterface {
+ ComponentBase injected;
+ public ComponentTakingInterface(ComponentBase componentBase) {
+ injected = componentBase;
+ }
+ }
+
public static class ComponentTakingConfig extends SimpleComponent {
private final TestConfig config;