1 package org.objectweb.celtix.bus.configuration; 2 3 4 import java.io.IOException ; 5 import java.lang.reflect.Method ; 6 import java.math.BigInteger ; 7 import java.util.Collection ; 8 import java.util.List ; 9 10 import junit.framework.TestCase; 11 12 import org.easymock.classextension.EasyMock; 13 import org.objectweb.celtix.configuration.Configuration; 14 import org.objectweb.celtix.configuration.ConfigurationException; 15 import org.objectweb.celtix.configuration.ConfigurationMetadata; 16 import org.objectweb.celtix.configuration.Configurator; 17 import org.objectweb.celtix.configuration.impl.AbstractConfigurationImpl; 18 import org.objectweb.celtix.configuration.impl.DefaultConfigurationProviderFactory; 19 20 21 public class AbstractConfigurationImplTest extends TestCase { 22 23 private final Configuration top; 24 25 public AbstractConfigurationImplTest(String name) { 26 super(name); 27 top = new TopConfigurationBuilder().build("top"); 28 } 29 30 public void testDefaultConfigurationProviderFactory() throws NoSuchMethodException , IOException { 31 Method m = DefaultConfigurationProviderFactory.class 32 .getDeclaredMethod("getDefaultProviderClassName"); 33 DefaultConfigurationProviderFactory factory = 34 EasyMock.createMock(DefaultConfigurationProviderFactory.class, new Method [] {m}); 35 factory.getDefaultProviderClassName(); 36 org.easymock.EasyMock.expectLastCall().andReturn("org.objectweb.celtix.some.Unknown"); 37 EasyMock.replay(factory); 38 try { 39 factory.createDefaultProvider(null); 40 fail("Expected ConfigurationException not thrown."); 41 } catch (ConfigurationException ex) { 42 assertEquals("DEFAULT_PROVIDER_INSTANTIATION_EXC", ex.getCode()); 43 } 44 45 factory = DefaultConfigurationProviderFactory.getInstance(); 46 assertNotNull(factory.createDefaultProvider(null)); 47 } 48 49 public void testConstruction() { 50 assertNotNull(top); 51 ConfigurationMetadata model = top.getModel(); 52 assertNotNull(model); 53 assertEquals(18, model.getDefinitions().size()); 54 } 55 56 public void testConfigurators() { 57 AbstractConfigurationImpl topConfiguration = 58 (AbstractConfigurationImpl)new TopConfigurationBuilder().build("TOP"); 59 Configurator topConfigurator = topConfiguration.getConfigurator(); 60 assertNotNull(topConfigurator); 61 assertTrue(topConfiguration == topConfigurator.getConfiguration()); 62 assertNull(topConfigurator.getHook()); 63 Collection <Configurator> topClients = topConfigurator.getClients(); 64 assertEquals(0, topClients.size()); 65 66 AbstractConfigurationImpl leafConfiguration = 67 (AbstractConfigurationImpl)new LeafConfigurationBuilder().build(topConfiguration, "LEAF"); 68 assertEquals(1, topClients.size()); 69 Configurator leafConfigurator = leafConfiguration.getConfigurator(); 70 assertNotNull(leafConfigurator); 71 assertTrue(leafConfiguration == leafConfigurator.getConfiguration()); 72 Configurator hook = leafConfigurator.getHook(); 73 assertNotNull(hook); 74 assertTrue(hook == topConfigurator); 75 Collection <Configurator> leafClients = leafConfigurator.getClients(); 76 assertEquals(0, leafClients.size()); 77 78 Object cidTop = topConfiguration.getId(); 79 assertEquals("TOP", cidTop.toString()); 80 81 Object cidLeaf = leafConfiguration.getId(); 82 assertEquals("LEAF", cidLeaf.toString()); 83 84 assertTrue(cidTop.equals(cidTop)); 85 assertTrue(!cidTop.equals(cidLeaf)); 86 assertTrue(!cidTop.equals(this)); 87 88 assertTrue(!cidTop.toString().equals(cidLeaf.toString())); 89 assertTrue(cidTop.hashCode() != cidLeaf.hashCode()); 90 91 92 topConfigurator.unregisterClient(leafConfigurator); 93 assertEquals(0, topClients.size()); 94 assertNotNull(leafConfigurator.getHook()); 95 96 } 97 98 public void testUndefined() { 99 try { 100 top.getObject("undefinedStringItem"); 101 } catch (ConfigurationException ex) { 102 assertEquals("ITEM_NOT_DEFINED_EXC", ex.getCode()); 103 } 104 } 105 106 107 public void testNoDefaults() { 108 109 assertNull(top.getObject("booleanItemNoDefault")); 110 try { 111 top.getBoolean("booleanItemNoDefault"); 112 } catch (ConfigurationException ex) { 113 assertEquals("ITEM_NO_VALUE_EXC", ex.getCode()); 114 } 115 assertNull(top.getObject("shortItemNoDefault")); 116 try { 117 top.getShort("shortItemNoDefault"); 118 } catch (ConfigurationException ex) { 119 assertEquals("ITEM_NO_VALUE_EXC", ex.getCode()); 120 } 121 assertNull(top.getObject("intItemNoDefault")); 122 try { 123 top.getInt("integerItemNoDefault"); 124 } catch (ConfigurationException ex) { 125 assertEquals("ITEM_NO_VALUE_EXC", ex.getCode()); 126 } 127 assertNull(top.getObject("longItemNoDefault")); 128 try { 129 top.getLong("longItemNoDefault"); 130 } catch (ConfigurationException ex) { 131 assertEquals("ITEM_NO_VALUE_EXC", ex.getCode()); 132 } 133 assertNull(top.getObject("floatItemNoDefault")); 134 try { 135 top.getFloat("floatItemNoDefault"); 136 } catch (ConfigurationException ex) { 137 assertEquals("ITEM_NO_VALUE_EXC", ex.getCode()); 138 } 139 assertNull(top.getObject("doubleItemNoDefault")); 140 try { 141 top.getDouble("doubleItemNoDefault"); 142 } catch (ConfigurationException ex) { 143 assertEquals("ITEM_NO_VALUE_EXC", ex.getCode()); 144 } 145 assertNull(top.getObject("stringItemNoDefault")); 146 try { 147 top.getObject("stringItemNoDefault"); 148 } catch (ConfigurationException ex) { 149 assertEquals("ITEM_NO_VALUE_EXC", ex.getCode()); 150 } 151 assertNull(top.getObject("stringListItemNoDefault")); 152 } 153 154 public void testDefaults() { 155 Object value = null; 156 assertNotNull(top.getObject("booleanItem")); 157 assertTrue(top.getBoolean("booleanItem")); 158 assertNotNull(top.getObject("shortItem")); 159 assertEquals(3, top.getShort("shortItem")); 160 assertNotNull(top.getObject("intItem")); 161 assertEquals(44959, top.getInt("intItem")); 162 value = top.getObject("integerItem"); 163 assertNotNull(value); 164 assertEquals(44959, ((BigInteger )value).intValue()); 165 assertNotNull(top.getObject("longItem")); 166 assertEquals(-99, top.getLong("longItem")); 167 assertNotNull(top.getObject("floatItem")); 168 assertTrue(Math.abs(1234.5678 - top.getFloat("floatItem")) < 0.5E-3); 169 assertNotNull(top.getObject("doubleItem")); 170 assertTrue(Math.abs(1234.5678 - top.getDouble("doubleItem")) < 0.5E-5); 171 assertNotNull(top.getObject("stringItem")); 172 assertEquals("\"Hello World!\"", top.getString("stringItem")); 173 value = top.getObject("stringListItem"); 174 assertNotNull(value); 175 List <String > l = top.getStringList("stringListItem"); 176 assertNotNull(l); 177 assertEquals(3, l.size()); 178 assertEquals("a", l.get(0)); 179 assertEquals("b", l.get(1)); 180 assertEquals("c", l.get(2)); 181 } 182 183 public void testTypeMismatch() { 184 try { 185 top.getStringList("booleanItem"); 186 } catch (ConfigurationException ex) { 187 assertEquals("ITEM_TYPE_MISMATCH_EXC", ex.getCode()); 188 } 189 try { 190 top.getBoolean("shortItem"); 191 } catch (ConfigurationException ex) { 192 assertEquals("ITEM_TYPE_MISMATCH_EXC", ex.getCode()); 193 } 194 try { 195 top.getShort("intItem"); 196 } catch (ConfigurationException ex) { 197 assertEquals("ITEM_TYPE_MISMATCH_EXC", ex.getCode()); 198 } 199 try { 200 top.getInt("integerItem"); 201 } catch (ConfigurationException ex) { 202 assertEquals("ITEM_TYPE_MISMATCH_EXC", ex.getCode()); 203 } 204 try { 205 top.getLong("doubleItem"); 206 } catch (ConfigurationException ex) { 207 assertEquals("ITEM_TYPE_MISMATCH_EXC", ex.getCode()); 208 } 209 try { 210 top.getDouble("stringItem"); 211 } catch (ConfigurationException ex) { 212 assertEquals("ITEM_TYPE_MISMATCH_EXC", ex.getCode()); 213 } 214 try { 215 top.getString("stringListItem"); 216 } catch (ConfigurationException ex) { 217 assertEquals("ITEM_TYPE_MISMATCH_EXC", ex.getCode()); 218 } 219 } 220 221 public void testTypeMismatchWrite() { 222 try { 223 top.setBoolean("shortItem", true); 224 } catch (ConfigurationException ex) { 225 assertEquals("ITEM_TYPE_MISMATCH_EXC", ex.getCode()); 226 } 227 try { 228 top.setShort("intItem", (short)99); 229 } catch (ConfigurationException ex) { 230 assertEquals("ITEM_TYPE_MISMATCH_EXC", ex.getCode()); 231 } 232 try { 233 top.setInt("integerItem", 99); 234 } catch (ConfigurationException ex) { 235 assertEquals("ITEM_TYPE_MISMATCH_EXC", ex.getCode()); 236 } 237 try { 238 top.setLong("doubleItem", 99); 239 } catch (ConfigurationException ex) { 240 assertEquals("ITEM_TYPE_MISMATCH_EXC", ex.getCode()); 241 } 242 try { 243 top.setDouble("stringItem", 99.9); 244 } catch (ConfigurationException ex) { 245 assertEquals("ITEM_TYPE_MISMATCH_EXC", ex.getCode()); 246 } 247 try { 248 top.setString("stringListItem", "testString"); 249 } catch (ConfigurationException ex) { 250 assertEquals("ITEM_TYPE_MISMATCH_EXC", ex.getCode()); 251 } 252 } 253 254 } 255 256 | Popular Tags |