diff options
author | gjoranv <gv@verizonmedia.com> | 2021-04-02 16:59:04 +0200 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2021-04-12 16:13:43 +0200 |
commit | c62b861a30b923c5d1b23732f2131806030ee9e0 (patch) | |
tree | e964664339731c1eb436ffe9529af14893fc5ef6 /container-core/src/test/java/com/yahoo/component/provider | |
parent | 68deb69917fb923aab6d98feaa6fac932c6858ef (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.java | 94 |
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))); + } + +} |