@Test public void testContainersAreMergedRecursively() throws Exception { // Data taken from the documentation for BasicContainerConfig#mergeParents Map<String, Object> defaultContainer = makeContainer("default", "base", "/gadgets/foo", "user", "peter", "map", ImmutableMap.of("latitude", 42, "longitude", -8), "data", ImmutableList.of("foo", "bar")); Map<String, Object> newContainer = makeContainer("new", "user", "anne", "colour", "green", "map", ImmutableMap.of("longitude", 130), "data", null); Map<String, Object> expectedContainer = makeContainer("new", "base", "/gadgets/foo", "user", "anne", "colour", "green", "map", ImmutableMap.of("latitude", 42, "longitude", 130), "data", null); config.newTransaction().addContainer(defaultContainer).addContainer(newContainer).commit(); assertEquals(expectedContainer, config.getProperties("new")); }
@Test public void testContainersAreMergedRecursively() throws Exception { // Data taken from the documentation for BasicContainerConfig#mergeParents Map<String, Object> defaultContainer = makeContainer("default", "base", "/gadgets/foo", "user", "peter", "map", ImmutableMap.of("latitude", 42, "longitude", -8), "data", ImmutableList.of("foo", "bar")); Map<String, Object> newContainer = makeContainer("new", "user", "anne", "colour", "green", "map", ImmutableMap.of("longitude", 130), "data", null); Map<String, Object> expectedContainer = makeContainer("new", "base", "/gadgets/foo", "user", "anne", "colour", "green", "map", ImmutableMap.of("latitude", 42, "longitude", 130), "data", null); config.newTransaction().addContainer(defaultContainer).addContainer(newContainer).commit(); assertEquals(expectedContainer, config.getProperties("new")); }
@Test public void testContainersAreMergedRecursively() throws Exception { // Data taken from the documentation for BasicContainerConfig#mergeParents Map<String, Object> defaultContainer = makeContainer("default", "base", "/gadgets/foo", "user", "peter", "map", ImmutableMap.of("latitude", 42, "longitude", -8), "data", ImmutableList.of("foo", "bar")); Map<String, Object> newContainer = makeContainer("new", "user", "anne", "colour", "green", "map", ImmutableMap.of("longitude", 130), "data", null); Map<String, Object> expectedContainer = makeContainer("new", "base", "/gadgets/foo", "user", "anne", "colour", "green", "map", ImmutableMap.of("latitude", 42, "longitude", 130), "data", null); config.newTransaction().addContainer(defaultContainer).addContainer(newContainer).commit(); assertEquals(expectedContainer, config.getProperties("new")); }
@Test public void testNulledPropertiesRemainNulledAfterSeveralTransactions() throws Exception { Map<String, Object> defaultContainer = makeContainer("default", "o1", "v1", "o2", "v2", "o3", "v3"); Map<String, Object> parentContainer = makeContainer("parent", "o3", null); Map<String, Object> childContainer = makeContainer("child", "parent", "parent", "o2", null); config.newTransaction().addContainer(defaultContainer).commit(); config.newTransaction().addContainer(parentContainer).commit(); config.newTransaction().addContainer(childContainer).commit(); assertNull(config.getProperty("child", "o2")); assertNull(config.getProperty("child", "o3")); assertNull(config.getProperty("parent", "o3")); }
@Test public void testNulledPropertiesRemainNulledAfterSeveralTransactions() throws Exception { Map<String, Object> defaultContainer = makeContainer("default", "o1", "v1", "o2", "v2", "o3", "v3"); Map<String, Object> parentContainer = makeContainer("parent", "o3", null); Map<String, Object> childContainer = makeContainer("child", "parent", "parent", "o2", null); config.newTransaction().addContainer(defaultContainer).commit(); config.newTransaction().addContainer(parentContainer).commit(); config.newTransaction().addContainer(childContainer).commit(); assertNull(config.getProperty("child", "o2")); assertNull(config.getProperty("child", "o3")); assertNull(config.getProperty("parent", "o3")); }
@Test public void testNulledPropertiesRemainNulledAfterSeveralTransactions() throws Exception { Map<String, Object> defaultContainer = makeContainer("default", "o1", "v1", "o2", "v2", "o3", "v3"); Map<String, Object> parentContainer = makeContainer("parent", "o3", null); Map<String, Object> childContainer = makeContainer("child", "parent", "parent", "o2", null); config.newTransaction().addContainer(defaultContainer).commit(); config.newTransaction().addContainer(parentContainer).commit(); config.newTransaction().addContainer(childContainer).commit(); assertNull(config.getProperty("child", "o2")); assertNull(config.getProperty("child", "o3")); assertNull(config.getProperty("parent", "o3")); }
@Test public void testAliasesArePopulated() throws Exception { Map<String, Object> container = makeContainer(ImmutableList.of("original", "alias"), "property", "value"); config.newTransaction().addContainer(container).commit(); assertEquals(ImmutableSet.of("default", "original", "alias"), config.getContainers()); assertEquals("value", config.getString("original", "property")); assertEquals("value", config.getString("alias", "property")); } }
@Test public void testAliasesArePopulated() throws Exception { Map<String, Object> container = makeContainer(ImmutableList.of("original", "alias"), "property", "value"); config.newTransaction().addContainer(container).commit(); assertEquals(ImmutableSet.of("default", "original", "alias"), config.getContainers()); assertEquals("value", config.getString("original", "property")); assertEquals("value", config.getString("alias", "property")); } }
@Test public void testAliasesArePopulated() throws Exception { Map<String, Object> container = makeContainer(ImmutableList.of("original", "alias"), "property", "value"); config.newTransaction().addContainer(container).commit(); assertEquals(ImmutableSet.of("default", "original", "alias"), config.getContainers()); assertEquals("value", config.getString("original", "property")); assertEquals("value", config.getString("alias", "property")); } }
@Test public void testClearContainerConfig() throws Exception { ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.of("additional")), EasyMock.eq(ImmutableSet.of("extra"))); EasyMock.replay(observer); config = new BasicContainerConfig(); config .newTransaction() .clearContainers() .addContainer(DEFAULT_CONTAINER) .addContainer(EXTRA_CONTAINER) .commit(); config.addConfigObserver(observer, false); config .newTransaction() .clearContainers() .addContainer(DEFAULT_CONTAINER) .addContainer(makeContainer("additional")) .commit(); assertFalse(config.getContainers().contains("extra")); assertTrue(config.getContainers().contains("additional")); EasyMock.verify(observer); }
@Test public void testClearContainerConfig() throws Exception { ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.of("additional")), EasyMock.eq(ImmutableSet.of("extra"))); EasyMock.replay(observer); config = new BasicContainerConfig(); config .newTransaction() .clearContainers() .addContainer(DEFAULT_CONTAINER) .addContainer(EXTRA_CONTAINER) .commit(); config.addConfigObserver(observer, false); config .newTransaction() .clearContainers() .addContainer(DEFAULT_CONTAINER) .addContainer(makeContainer("additional")) .commit(); assertFalse(config.getContainers().contains("extra")); assertTrue(config.getContainers().contains("additional")); EasyMock.verify(observer); }
@Test public void testClearContainerConfig() throws Exception { ConfigObserver observer = EasyMock.createMock(ContainerConfig.ConfigObserver.class); observer.containersChanged(EasyMock.isA(ContainerConfig.class), EasyMock.eq(ImmutableSet.of("additional")), EasyMock.eq(ImmutableSet.of("extra"))); EasyMock.replay(observer); config = new BasicContainerConfig(); config .newTransaction() .clearContainers() .addContainer(DEFAULT_CONTAINER) .addContainer(EXTRA_CONTAINER) .commit(); config.addConfigObserver(observer, false); config .newTransaction() .clearContainers() .addContainer(DEFAULT_CONTAINER) .addContainer(makeContainer("additional")) .commit(); assertFalse(config.getContainers().contains("extra")); assertTrue(config.getContainers().contains("additional")); EasyMock.verify(observer); }
@Test public void testPropertyTypes() throws Exception { String container = "misc"; config.newTransaction().addContainer(makeContainer("misc", "bool", Boolean.valueOf(true), "bool2", "true", "badbool", Integer.valueOf(1234), "badbool2", "notabool", "int", Integer.valueOf(1234), "int2", "1234", "badint", "notanint", "string", "abcd", "list", ImmutableList.of("a"), "badlist", "notalist", "map", ImmutableMap.of("a", "b"), "badmap", "notamap")).commit(); assertEquals(true, config.getBool(container, "bool")); assertEquals(true, config.getBool(container, "bool2")); assertEquals(false, config.getBool(container, "badbool")); assertEquals(false, config.getBool(container, "badbool2")); assertEquals(1234, config.getInt(container, "int")); assertEquals(1234, config.getInt(container, "int2")); assertEquals(0, config.getInt(container, "badint")); assertEquals("abcd", config.getString(container, "string")); assertEquals(ImmutableList.of("a"), config.getList(container, "list")); assertTrue(config.getList(container, "badlist").isEmpty()); assertEquals(ImmutableMap.of("a", "b"), config.getMap(container, "map")); assertTrue(config.getMap(container, "badmap").isEmpty()); }
@Test public void testPropertyTypes() throws Exception { String container = "misc"; config.newTransaction().addContainer(makeContainer("misc", "bool", Boolean.valueOf(true), "bool2", "true", "badbool", Integer.valueOf(1234), "badbool2", "notabool", "int", Integer.valueOf(1234), "int2", "1234", "badint", "notanint", "string", "abcd", "list", ImmutableList.of("a"), "badlist", "notalist", "map", ImmutableMap.of("a", "b"), "badmap", "notamap")).commit(); assertEquals(true, config.getBool(container, "bool")); assertEquals(true, config.getBool(container, "bool2")); assertEquals(false, config.getBool(container, "badbool")); assertEquals(false, config.getBool(container, "badbool2")); assertEquals(1234, config.getInt(container, "int")); assertEquals(1234, config.getInt(container, "int2")); assertEquals(0, config.getInt(container, "badint")); assertEquals("abcd", config.getString(container, "string")); assertEquals(ImmutableList.of("a"), config.getList(container, "list")); assertTrue(config.getList(container, "badlist").isEmpty()); assertEquals(ImmutableMap.of("a", "b"), config.getMap(container, "map")); assertTrue(config.getMap(container, "badmap").isEmpty()); }
@Test public void testPropertyTypes() throws Exception { String container = "misc"; config.newTransaction().addContainer(makeContainer("misc", "bool", Boolean.valueOf(true), "bool2", "true", "badbool", Integer.valueOf(1234), "badbool2", "notabool", "int", Integer.valueOf(1234), "int2", "1234", "badint", "notanint", "string", "abcd", "list", ImmutableList.of("a"), "badlist", "notalist", "map", ImmutableMap.of("a", "b"), "badmap", "notamap")).commit(); assertEquals(true, config.getBool(container, "bool")); assertEquals(true, config.getBool(container, "bool2")); assertEquals(false, config.getBool(container, "badbool")); assertEquals(false, config.getBool(container, "badbool2")); assertEquals(1234, config.getInt(container, "int")); assertEquals(1234, config.getInt(container, "int2")); assertEquals(0, config.getInt(container, "badint")); assertEquals("abcd", config.getString(container, "string")); assertEquals(ImmutableList.of("a"), config.getList(container, "list")); assertTrue(config.getList(container, "badlist").isEmpty()); assertEquals(ImmutableMap.of("a", "b"), config.getMap(container, "map")); assertTrue(config.getMap(container, "badmap").isEmpty()); }