@Test public void testPut() { CompoundConfiguration compoundConf = new CompoundConfiguration().add(baseConf); assertEquals("1", compoundConf.get("A")); assertEquals(2, compoundConf.getInt("B", 0)); assertEquals(3, compoundConf.getInt("C", 0)); assertEquals(0, compoundConf.getInt("D", 0)); compoundConf.set("A", "1337"); compoundConf.set("string", "stringvalue"); assertEquals(1337, compoundConf.getInt("A", 0)); assertEquals("stringvalue", compoundConf.get("string")); // we didn't modify the base conf assertEquals("1", baseConf.get("A")); assertNull(baseConf.get("string")); // adding to the base shows up in the compound baseConf.set("setInParent", "fromParent"); assertEquals("fromParent", compoundConf.get("setInParent")); }
@Test public void testWithIbwMap() { Map<ImmutableBytesWritable, ImmutableBytesWritable> map = new HashMap<ImmutableBytesWritable, ImmutableBytesWritable>(); map.put(strToIbw("B"), strToIbw("2b")); map.put(strToIbw("C"), strToIbw("33")); map.put(strToIbw("D"), strToIbw("4")); // unlike config, note that IBW Maps can accept null values map.put(strToIbw("G"), null); CompoundConfiguration compoundConf = new CompoundConfiguration().add(baseConf).addWritableMap(map); assertEquals("1", compoundConf.get("A")); assertEquals("2b", compoundConf.get("B")); assertEquals(33, compoundConf.getInt("C", 0)); assertEquals("4", compoundConf.get("D")); assertEquals(4, compoundConf.getInt("D", 0)); assertNull(compoundConf.get("E")); assertEquals(6, compoundConf.getInt("F", 6)); assertNull(compoundConf.get("G")); int cnt = 0; for (Map.Entry<String, String> entry : compoundConf) { cnt++; if (entry.getKey().equals("B")) assertEquals("2b", entry.getValue()); else if (entry.getKey().equals("G")) assertEquals(null, entry.getValue()); } // verify that entries from ImmutableConfigMap's are merged in the iterator's view assertEquals(baseConfSize + 2, cnt); // Verify that adding map after compound configuration is modified overrides properly CompoundConfiguration conf2 = new CompoundConfiguration(); conf2.set("X", "modification"); conf2.set("D", "not4"); assertEquals("modification", conf2.get("X")); assertEquals("not4", conf2.get("D")); conf2.addWritableMap(map); assertEquals("4", conf2.get("D")); // map overrides }