Index: lutinutil/src/test/org/codelutin/util/MyPropertiesTest.java diff -u lutinutil/src/test/org/codelutin/util/MyPropertiesTest.java:1.2 lutinutil/src/test/org/codelutin/util/MyPropertiesTest.java:1.3 --- lutinutil/src/test/org/codelutin/util/MyPropertiesTest.java:1.2 Mon Dec 10 02:36:01 2007 +++ lutinutil/src/test/org/codelutin/util/MyPropertiesTest.java Tue Dec 11 02:09:39 2007 @@ -9,6 +9,8 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.util.Arrays; +import java.util.List; import java.util.Properties; /** @@ -21,8 +23,7 @@ public class MyPropertiesTest extends TestCase { static { // init I18N - I18n.init(System.getProperty("user.language"), - System.getProperty("user.country")); + I18n.init(System.getProperty("user.language"), System.getProperty("user.country")); } enum MyPropertiesTestDef implements MyPropertyDef { @@ -339,7 +340,7 @@ propertiesBis = MyProperties.newInstance(MyPropertiesTestDef4.class); propertiesBis2 = MyProperties.newInstance(MyPropertiesTestDef4.class); - + Properties props = new Properties(); props.put("key.boolean", false); props.put("key.string", "hello"); @@ -349,7 +350,7 @@ properties.load(props); - props.clear(); + props.clear(); props.put("key2.boolean", false); props.put("key2.string", "hello"); props.put("key2.integer", -100); @@ -368,13 +369,69 @@ 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(); + int expectedSize =properties.size() + propertiesBis.size(); + + + 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()); + } + } + + public void testMultiStore() 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); + MyPropertiesUtil.store(out, new String[]{"properties", "propertiesBis2"}, properties, propertiesBis); + //properties.store(out, "test store"); + //propertiesBis.store(out, "testBis store"); + out.close(); + Properties result = new Properties(); + System.out.println("saved file :\n" + FileUtil.readAsString(tmp)); + result.load(new FileInputStream(tmp)); - expectedSize = sizeOne+ sizeTwo; + int expectedSize = properties.size()+ propertiesBis.size(); - assertEquals(expectedSize,result.size()); + assertEquals(expectedSize, result.size()); properties2.load(new FileInputStream(tmp)); propertiesBis2.load(new FileInputStream(tmp)); @@ -392,6 +449,57 @@ } } + public void testMultiLoad() 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", 7); + propertiesBis.load(props); + + File tmp = File.createTempFile(getClass().getSimpleName(), ".properties"); + tmp.deleteOnExit(); + FileOutputStream out = new FileOutputStream(tmp); + MyPropertiesUtil.store(out, new String[]{"properties", "propertiesBis2"}, properties, propertiesBis); + out.write("fakeEntry=fakeValue\n".getBytes()); + out.write("key.mykey=10\n".getBytes()); + out.write("key2.mykey=10\n".getBytes()); + out.flush(); + out.close(); + + System.out.println("saved file :\n" + FileUtil.readAsString(tmp)); + + int expectedSize = properties.size() + propertiesBis.size(); + + MyPropertiesUtil.load(tmp.toURI(),properties2,propertiesBis2); + + assertEquals(properties.size(), properties2.size()); + assertEquals(2, properties2.getUnsafeDataKeys().size()); + String FAKE_ENTRY = "fakeEntry"; + assertEquals(Arrays.asList(FAKE_ENTRY,(Object) "key.mykey"), properties2.getUnsafeDataKeys()); + + assertEquals(propertiesBis.size(), propertiesBis2.size()); + assertEquals(2, propertiesBis2.getUnsafeDataKeys().size()); + assertEquals(Arrays.asList((Object) FAKE_ENTRY,"key2.mykey"), propertiesBis2.getUnsafeDataKeys()); + + System.out.println(properties2); + System.out.println(propertiesBis2); + + } + private void assertKeyEntry(String key, Class type, Object val, Object valDef) { assertEquals(key, this.key); assertTrue(type.isAssignableFrom(this.type));