package com.tinkerpop.rexster.extension; import org.apache.commons.configuration.HierarchicalConfiguration; import org.junit.Assert; import org.junit.Test; import java.util.Map; public class ExtensionConfigurationTest { @Test(expected = IllegalArgumentException.class) public void constructEmptyNamespace() { new ExtensionConfiguration("", "name", new HierarchicalConfiguration()); } @Test(expected = IllegalArgumentException.class) public void constructNullNamespace() { new ExtensionConfiguration(null, "name", new HierarchicalConfiguration()); } @Test(expected = IllegalArgumentException.class) public void constructEmptyName() { new ExtensionConfiguration("ns", "", new HierarchicalConfiguration()); } @Test(expected = IllegalArgumentException.class) public void constructNullName() { new ExtensionConfiguration("ns", null, new HierarchicalConfiguration()); } @Test(expected = IllegalArgumentException.class) public void constructNullConfiguration() { new ExtensionConfiguration("ns", "name", null); } @Test public void constructValid() { HierarchicalConfiguration hc = new HierarchicalConfiguration(); ExtensionConfiguration config = new ExtensionConfiguration("ns", "name", hc); Assert.assertEquals("ns", config.getNamespace()); Assert.assertEquals("name", config.getExtensionName()); Assert.assertEquals(hc, config.getConfiguration()); } @Test public void tryGetMapFromConfigurationEmptyConfig() { HierarchicalConfiguration hc = new HierarchicalConfiguration(); ExtensionConfiguration config = new ExtensionConfiguration("ns", "name", hc); Map<String, String> map = config.tryGetMapFromConfiguration(); Assert.assertNotNull(map); Assert.assertTrue(map.isEmpty()); } @Test public void tryGetMapFromConfigurationBadConfig() { HierarchicalConfiguration hc = new HierarchicalConfiguration(); HierarchicalConfiguration innerHc = new HierarchicalConfiguration(); innerHc.addProperty("test", "1"); hc.addProperty("test-bad", innerHc); ExtensionConfiguration config = new ExtensionConfiguration("ns", "name", hc); Map<String, String> map = config.tryGetMapFromConfiguration(); Assert.assertNull(map); } @Test public void tryGetMapFromConfigurationNiceConfig() { HierarchicalConfiguration hc = new HierarchicalConfiguration(); hc.addProperty("key1", "value1"); hc.addProperty("key2", "value2"); ExtensionConfiguration config = new ExtensionConfiguration("ns", "name", hc); Map<String, String> map = config.tryGetMapFromConfiguration(); Assert.assertNotNull(map); Assert.assertTrue(map.containsKey("key1")); Assert.assertEquals("value1", map.get("key1")); Assert.assertTrue(map.containsKey("key2")); Assert.assertEquals("value2", map.get("key2")); } @Test public void shouldEqual() { HierarchicalConfiguration hc1 = new HierarchicalConfiguration(); hc1.addProperty("key1", "value1"); hc1.addProperty("key2", "value2"); ExtensionConfiguration config1 = new ExtensionConfiguration("ns", "name", hc1); HierarchicalConfiguration hc2 = new HierarchicalConfiguration(); hc2.addProperty("key1", "value1"); hc2.addProperty("key2", "value2"); ExtensionConfiguration config2 = new ExtensionConfiguration("ns", "name", hc2); Assert.assertTrue(config1.equals(config2)); } @Test public void shouldNotEqualWhenValuesInConfigAreDifferent() { HierarchicalConfiguration hc1 = new HierarchicalConfiguration(); hc1.addProperty("key1", "value1"); hc1.addProperty("key2", "value2"); ExtensionConfiguration config1 = new ExtensionConfiguration("ns", "name", hc1); HierarchicalConfiguration hc2 = new HierarchicalConfiguration(); hc2.addProperty("key1", "value1"); hc2.addProperty("key2", "value-not the same"); ExtensionConfiguration config2 = new ExtensionConfiguration("ns", "name", hc2); Assert.assertFalse(config1.equals(config2)); } @Test public void shouldNotEqualWhenMissingKeyInConfig() { HierarchicalConfiguration hc1 = new HierarchicalConfiguration(); hc1.addProperty("key1", "value1"); hc1.addProperty("key2", "value2"); ExtensionConfiguration config1 = new ExtensionConfiguration("ns", "name", hc1); HierarchicalConfiguration hc2 = new HierarchicalConfiguration(); hc2.addProperty("key1", "value1"); ExtensionConfiguration config2 = new ExtensionConfiguration("ns", "name", hc2); Assert.assertFalse(config1.equals(config2)); } @Test public void shouldNotEqualWhenConfig1HasKeyConfig2DoesNot() { HierarchicalConfiguration hc1 = new HierarchicalConfiguration(); hc1.addProperty("key1", "value1"); hc1.addProperty("key2", "value2"); ExtensionConfiguration config1 = new ExtensionConfiguration("ns", "name", hc1); HierarchicalConfiguration hc2 = new HierarchicalConfiguration(); hc2.addProperty("key1", "value1"); hc2.addProperty("new-key", "value1"); ExtensionConfiguration config2 = new ExtensionConfiguration("ns", "name", hc2); Assert.assertFalse(config1.equals(config2)); } @Test public void shouldNotEqualWhenConfig2HasAllKeysFromConfig1ButAlsoANewOne() { HierarchicalConfiguration hc1 = new HierarchicalConfiguration(); hc1.addProperty("key1", "value1"); ExtensionConfiguration config1 = new ExtensionConfiguration("ns", "name", hc1); HierarchicalConfiguration hc2 = new HierarchicalConfiguration(); hc2.addProperty("key1", "value1"); hc2.addProperty("new-key", "value1"); ExtensionConfiguration config2 = new ExtensionConfiguration("ns", "name", hc2); Assert.assertFalse(config1.equals(config2)); } @Test public void shouldNotEqualWhenValuesInConfigAreDifferentDeeperInHierarchy() { HierarchicalConfiguration hc1 = new HierarchicalConfiguration(); hc1.addProperty("key1", "value1"); HierarchicalConfiguration hc1i = new HierarchicalConfiguration(); hc1i.addProperty("key2i", "value2i"); hc1.addProperty("key2", hc1i); ExtensionConfiguration config1 = new ExtensionConfiguration("ns", "name", hc1); HierarchicalConfiguration hc2 = new HierarchicalConfiguration(); hc2.addProperty("key1", "value1"); HierarchicalConfiguration hc2i = new HierarchicalConfiguration(); hc2i.addProperty("key2i", "value-not the same"); hc2.addProperty("key2", hc2i); ExtensionConfiguration config2 = new ExtensionConfiguration("ns", "name", hc2); Assert.assertFalse(config1.equals(config2)); } @Test public void shouldEqualWhenValuesInConfigAreSameDeeperInHierarchy() { HierarchicalConfiguration hc1 = new HierarchicalConfiguration(); hc1.addProperty("key1", "value1"); HierarchicalConfiguration hc1i = new HierarchicalConfiguration(); hc1i.addProperty("key2i", "value2i"); hc1.addProperty("key2", hc1i); ExtensionConfiguration config1 = new ExtensionConfiguration("ns", "name", hc1); HierarchicalConfiguration hc2 = new HierarchicalConfiguration(); hc2.addProperty("key1", "value1"); HierarchicalConfiguration hc2i = new HierarchicalConfiguration(); hc2i.addProperty("key2i", "value2i"); hc2.addProperty("key2", hc2i); ExtensionConfiguration config2 = new ExtensionConfiguration("ns", "name", hc2); Assert.assertTrue(config1.equals(config2)); } }