Index: lutinutil/src/test/org/codelutin/util/MyPropertiesTest.java diff -u lutinutil/src/test/org/codelutin/util/MyPropertiesTest.java:1.1 lutinutil/src/test/org/codelutin/util/MyPropertiesTest.java:1.2 --- lutinutil/src/test/org/codelutin/util/MyPropertiesTest.java:1.1 Sun Dec 9 20:04:23 2007 +++ lutinutil/src/test/org/codelutin/util/MyPropertiesTest.java Mon Dec 10 02:36:01 2007 @@ -5,6 +5,10 @@ import org.codelutin.util.MyPropertiesUtil.MyPropertyDef; import org.codelutin.util.MyPropertiesUtil.MyPropertyKey; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; import java.util.Properties; /** @@ -33,6 +37,18 @@ } } + enum MyPropertiesTestDef4 implements MyPropertyDef { + BOOLEAN("key2.boolean", Boolean.class), + INTEGER("key2.integer", Integer.class), + LONG("key2.long", Long.class), + STRING("key2.string", String.class), + MYKEY("key2.mykey", MyPropertiesTestDef.class); + + MyPropertiesTestDef4(String key, Class type) { + MyPropertyKeyManager.registerKey(new MyPropertyKey(this, key, type)); + } + } + enum MyPropertiesTestDef2 implements MyPropertyDef { BOOLEAN("key2.boolean", Boolean.class), INTEGER("key2.integer", Integer.class), @@ -90,6 +106,10 @@ } MyProperties properties; + MyProperties properties2; + + MyProperties propertiesBis; + MyProperties propertiesBis2; Class type; String key; @@ -102,6 +122,7 @@ MyPropertiesTestDef.values(); MyPropertiesTestDef2.values(); MyPropertiesTestDef3.values(); + MyPropertiesTestDef4.values(); } public void testConstructor() throws Exception { @@ -312,6 +333,65 @@ } + public void testStore() throws Exception { + properties = MyProperties.newInstance(MyPropertiesTestDef.class); + properties2 = MyProperties.newInstance(MyPropertiesTestDef.class); + + propertiesBis = MyProperties.newInstance(MyPropertiesTestDef4.class); + propertiesBis2 = MyProperties.newInstance(MyPropertiesTestDef4.class); + + Properties props = new Properties(); + props.put("key.boolean", false); + props.put("key.string", "hello"); + props.put("key.integer", -100); + props.put("key.long", (long) 1000); + props.put("key.mykey", 10); + + properties.load(props); + + props.clear(); + props.put("key2.boolean", false); + props.put("key2.string", "hello"); + props.put("key2.integer", -100); + props.put("key2.long", (long) 1000); + props.put("key2.mykey", 1); + + propertiesBis.load(props); + + File tmp = File.createTempFile(getClass().getSimpleName(), ".properties"); + tmp.deleteOnExit(); + + try { + FileOutputStream out = new FileOutputStream(tmp); + properties.store(out, "test store"); + propertiesBis.store(out, "testBis store"); + out.close(); + Properties result = new Properties(); + result.load(new FileInputStream(tmp)); + int expectedSize; + int sizeOne = properties.size() + properties.getUnsafeDataKeys().size(); + int sizeTwo = propertiesBis.size() + propertiesBis.getUnsafeDataKeys().size(); + + expectedSize = sizeOne+ sizeTwo; + + assertEquals(expectedSize,result.size()); + + properties2.load(new FileInputStream(tmp)); + propertiesBis2.load(new FileInputStream(tmp)); + + assertEquals(properties.size(), properties2.size()); + assertEquals(expectedSize-properties.size(), properties2.getUnsafeDataKeys().size()); + + assertEquals(propertiesBis.size(), propertiesBis2.size()); + assertEquals(expectedSize-propertiesBis.size(), propertiesBis2.getUnsafeDataKeys().size()); + + System.out.println(properties2); + System.out.println(propertiesBis2); + } catch (IOException e) { + fail(e.getMessage()); + } + } + private void assertKeyEntry(String key, Class type, Object val, Object valDef) { assertEquals(key, this.key); assertTrue(type.isAssignableFrom(this.type));