aboutsummaryrefslogtreecommitdiffstats
path: root/container-core/src/test/java/com/yahoo/component/provider
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2021-04-02 16:59:04 +0200
committergjoranv <gv@verizonmedia.com>2021-04-02 19:03:05 +0200
commit3b286c4c41ef4946afcc958f1724e7e467e5dc3a (patch)
tree907263ee2de0671957e583bcc44f0639ce8c6401 /container-core/src/test/java/com/yahoo/component/provider
parent794378c79b06e6860f862f4c966740a6c8582325 (diff)
Add java source from container-di.
Diffstat (limited to 'container-core/src/test/java/com/yahoo/component/provider')
-rw-r--r--container-core/src/test/java/com/yahoo/component/provider/test/ComponentRegistryTestCase.java94
1 files changed, 94 insertions, 0 deletions
diff --git a/container-core/src/test/java/com/yahoo/component/provider/test/ComponentRegistryTestCase.java b/container-core/src/test/java/com/yahoo/component/provider/test/ComponentRegistryTestCase.java
new file mode 100644
index 00000000000..69eec95b746
--- /dev/null
+++ b/container-core/src/test/java/com/yahoo/component/provider/test/ComponentRegistryTestCase.java
@@ -0,0 +1,94 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.component.provider.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.yahoo.component.AbstractComponent;
+import com.yahoo.component.ComponentId;
+import com.yahoo.component.ComponentSpecification;
+import com.yahoo.component.provider.ComponentRegistry;
+
+/**
+ * Tests that ComponentRegistry handles namespaces correctly.
+ *
+ * @author Tony Vaagenes
+ */
+public class ComponentRegistryTestCase {
+ private static class TestComponent extends AbstractComponent {
+ TestComponent(ComponentId componentId) {
+ super(componentId);
+ }
+ }
+
+ private static final String componentName = "component";
+
+ private static final String namespace1 = "namespace1";
+ private static final String namespace2 = "namespace2";
+ private static final String namespace21 = "namespace2:1";
+
+ private static final TestComponent component1 = componentInNamespace(namespace1);
+ private static final TestComponent component2 = componentInNamespace(namespace2);
+ private static final TestComponent component21 = componentInNamespace(namespace21);
+
+ private ComponentRegistry<TestComponent> registry;
+
+ private static ComponentSpecification specInNamespace(String namespace) {
+ return new ComponentSpecification(componentName + "@" + namespace);
+ }
+
+ private static ComponentId idInNamespace(String namespace) {
+ return specInNamespace(namespace).toId();
+ }
+
+ private static TestComponent componentInNamespace(String namespace) {
+ return new TestComponent(idInNamespace(namespace));
+ }
+
+ @Before
+ public void before() {
+ registry = new ComponentRegistry<>();
+
+ registry.register(component1.getId(), component1);
+ registry.register(component2.getId(), component2);
+ registry.register(component21.getId(), component21);
+ }
+
+ @Test
+ public void testAllPresent() {
+ assertEquals(3, registry.getComponentCount());
+ }
+
+ @Test
+ public void testIdNamespaceLookup() {
+ assertEquals(component1, registry.getComponent(idInNamespace(namespace1)));
+ assertEquals(component2, registry.getComponent(idInNamespace(namespace2)));
+ assertEquals(component21, registry.getComponent(idInNamespace(namespace21)));
+ }
+
+ @Test
+ public void testSpecNamespaceLookup() {
+ assertEquals(component1, registry.getComponent(specInNamespace(namespace1)));
+
+ // Version for namespace must match the specification exactly, so do not return version '1' when an
+ // empty version is asked for.
+ assertEquals(component2, registry.getComponent(specInNamespace(namespace2)));
+ assertEquals(component21, registry.getComponent(specInNamespace(namespace21)));
+ }
+
+ @Test
+ public void testInnerComponentNotMixedWithTopLevelComponent() {
+ assertNull(registry.getComponent(componentName));
+
+ TestComponent topLevel = new TestComponent(new ComponentId(componentName));
+ registry.register(topLevel.getId(), topLevel);
+ assertEquals(topLevel, registry.getComponent(componentName));
+
+ assertEquals(component1, registry.getComponent(specInNamespace(namespace1)));
+ assertEquals(component1, registry.getComponent(idInNamespace(namespace1)));
+ }
+
+}