/*
* Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com>
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestConfig.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.config;
import java.io.File;
import java.io.Serializable;
import java.util.Collection;
import java.util.Iterator;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
import junit.framework.TestCase;
import com.uwyn.rife.config.exceptions.ConfigErrorException;
import com.uwyn.rife.resources.ResourceFinderClasspath;
import com.uwyn.rife.tools.ExceptionUtils;
import com.uwyn.rife.tools.SerializationUtils;
import com.uwyn.rife.tools.exceptions.SerializationUtilsErrorException;
public class TestConfig extends TestCase
{
public TestConfig(String name)
{
super(name);
}
public void testInstantiation()
{
Config config = new Config();
assertNotNull(config);
}
public void testValidParameters()
{
Config config = new Config();
assertEquals(config.countParameters(), 0);
config.setParameter("paramstring", "astring");
config.setParameter("parambool1", "0");
config.setParameter("parambool2", "1");
config.setParameter("parambool3", "false");
config.setParameter("parambool4", "true");
config.setParameter("parambool5", "f");
config.setParameter("parambool6", "t");
config.setParameter("paramchar", "C");
config.setParameter("paramint", "5133");
config.setParameter("paramlong", "8736478");
config.setParameter("paramfloat", "545.2546");
config.setParameter("paramdouble", "7863.3434353");
assertTrue(config.hasParameter("paramstring"));
assertTrue(config.hasParameter("parambool1"));
assertTrue(config.hasParameter("parambool2"));
assertTrue(config.hasParameter("parambool3"));
assertTrue(config.hasParameter("parambool4"));
assertTrue(config.hasParameter("parambool5"));
assertTrue(config.hasParameter("parambool6"));
assertTrue(config.hasParameter("paramchar"));
assertTrue(config.hasParameter("paramint"));
assertTrue(config.hasParameter("paramlong"));
assertTrue(config.hasParameter("paramfloat"));
assertTrue(config.hasParameter("paramdouble"));
assertEquals(config.countParameters(), 12);
assertFalse(config.isFinalParameter("paramstring"));
assertFalse(config.isFinalParameter("parambool1"));
assertFalse(config.isFinalParameter("parambool2"));
assertFalse(config.isFinalParameter("parambool3"));
assertFalse(config.isFinalParameter("parambool4"));
assertFalse(config.isFinalParameter("parambool5"));
assertFalse(config.isFinalParameter("parambool6"));
assertFalse(config.isFinalParameter("paramchar"));
assertFalse(config.isFinalParameter("paramint"));
assertFalse(config.isFinalParameter("paramlong"));
assertFalse(config.isFinalParameter("paramfloat"));
assertFalse(config.isFinalParameter("paramdouble"));
assertEquals(config.getString("paramstring"), "astring");
assertEquals(config.getBool("parambool1"), false);
assertEquals(config.getBool("parambool2"), true);
assertEquals(config.getBool("parambool3"), false);
assertEquals(config.getBool("parambool4"), true);
assertEquals(config.getBool("parambool5"), false);
assertEquals(config.getBool("parambool6"), true);
assertEquals(config.getChar("paramchar"), 'C');
assertEquals(config.getInt("paramint"), 5133);
assertEquals(config.getLong("paramlong"), 8736478L);
assertEquals(config.getFloat("paramfloat"), 545.2546f, 0);
assertEquals(config.getDouble("paramdouble"), 7863.3434353d, 0);
config.removeParameter("paramstring");
assertFalse(config.hasParameter("paramstring"));
assertNull(config.getString("paramstring"));
}
public void testInvalidParameters()
{
Config config = new Config();
assertEquals(config.countParameters(), 0);
assertEquals(config.hasParameter("paramstring"), false);
assertEquals(config.hasParameter("parambool"), false);
assertEquals(config.hasParameter("paramchar"), false);
assertEquals(config.hasParameter("paramint"), false);
assertEquals(config.hasParameter("paramlong"), false);
assertEquals(config.hasParameter("paramfloat"), false);
assertEquals(config.hasParameter("paramdouble"), false);
assertEquals(config.getString("paramstring"), null);
assertEquals(config.getBool("parambool"), false);
assertEquals(config.getChar("paramchar"), 0);
assertEquals(config.getInt("paramint"), 0);
assertEquals(config.getLong("paramlong"), 0);
assertEquals(config.getFloat("paramfloat"), 0, 0);
assertEquals(config.getDouble("paramdouble"), 0, 0);
}
public void testDefaultParameters()
{
Config config = new Config();
config.setParameter("paramstring", "astring");
config.setParameter("parambool", true);
config.setParameter("paramchar", 'C');
config.setParameter("paramint", 5133);
config.setParameter("paramlong", 8736478L);
config.setParameter("paramfloat", 545.2546f);
config.setParameter("paramdouble", 7863.3434353d);
assertEquals(config.getString("paramstring", "defaultstring"), "astring");
assertEquals(config.getBool("parambool", false), true);
assertEquals(config.getChar("paramchar", 'H'), 'C');
assertEquals(config.getInt("paramint", 834), 5133);
assertEquals(config.getLong("paramlong", 349875L), 8736478L);
assertEquals(config.getFloat("paramfloat", 354.9457f), 545.2546f, 0);
assertEquals(config.getDouble("paramdouble", 9347.784578d), 7863.3434353d, 0);
assertEquals(config.getString("paramstring2", "defaultstring"), "defaultstring");
assertEquals(config.getBool("parambool2", false), false);
assertEquals(config.getChar("paramchar2", 'H'), 'H');
assertEquals(config.getInt("paramint2", 834), 834);
assertEquals(config.getLong("paramlong2", 349875L), 349875L);
assertEquals(config.getFloat("paramfloat2", 354.9457f), 354.9457f, 0);
assertEquals(config.getDouble("paramdouble2", 9347.784578d), 9347.784578d, 0);
}
public void testFinalParameters()
{
Config config = new Config();
config.setParameter("final", "first");
assertFalse(config.isFinalParameter("final"));
assertEquals(config.getString("final"), "first");
config.setFinalParameter("final", true);
assertTrue(config.isFinalParameter("final"));
config.setParameter("final", "second");
assertEquals(config.getString("final"), "first");
config.removeParameter("final");
assertTrue(config.isFinalParameter("final"));
assertEquals(config.getString("final"), "first");
config.setFinalParameter("final", false);
assertFalse(config.isFinalParameter("final"));
config.setParameter("final", "second");
assertEquals(config.getString("final"), "second");
config.removeParameter("final");
assertNull(config.getString("final"));
}
public void testSerialization()
{
Config config = new Config();
SerializableClass serializable1 = new SerializableClass(459, "thestring");
SerializableClass serializable2 = new SerializableClass(680824, "thesecondstring");
SerializableClass serializable3 = null;
try
{
config.setParameter("paramserializable", serializable1);
serializable3 = config.getSerializable("paramserializable");
}
catch (ConfigErrorException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
assertEquals(serializable1, serializable3);
assertNotSame(serializable1, serializable3);
config.setParameter("paramstring", "astring");
serializable3 = config.getSerializable("paramstring");
assertNull(serializable3);
serializable3 = config.getSerializable("paramstring", serializable2);
assertEquals(serializable3, serializable2);
}
public void testLists()
{
Config config = new Config();
assertEquals(config.countLists(), 0);
config.addListItem("list1", "item1");
config.addListItem("list1", "item2");
config.addListItem("list1", "item3");
config.addListItem("list2", "item4");
config.addListItem("list2", "item5");
assertTrue(config.hasList("list1"));
assertTrue(config.hasList("list2"));
assertEquals(config.countLists(), 2);
assertFalse(config.isFinalList("list1"));
assertFalse(config.isFinalList("list2"));
Collection<String> items = null;
Iterator<String> item_it = null;
items = config.getStringItems("list1");
assertEquals(items.size(), 3);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item1");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item2");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item3");
assertEquals(item_it.hasNext(), false);
config.addListItem("list1", "item3");
assertEquals(items.size(), 4);
config.addListItem("list1", "item6");
assertEquals(items.size(), 5);
items = config.getStringItems("list2");
assertEquals(items.size(), 2);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item4");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item5");
assertEquals(item_it.hasNext(), false);
config.clearList("list1");
assertEquals(config.getStringItems("list1").size(), 0);
config.removeList("list2");
assertTrue(config.hasList("list1"));
assertTrue(!config.hasList("list2"));
assertEquals(config.countLists(), 1);
}
public void testListBool()
{
Config config = new Config();
Collection<Boolean> booleans = null;
config.addListItem("booleanlist", true);
config.addListItem("booleanlist", false);
config.addListItem("booleanlist", true);
booleans = config.getBoolItems("booleanlist");
assertEquals(3, booleans.size());
Iterator<Boolean> booleans_it = booleans.iterator();
assertEquals(booleans_it.hasNext(), true);
assertEquals(booleans_it.next().booleanValue(), true);
assertEquals(booleans_it.hasNext(), true);
assertEquals(booleans_it.next().booleanValue(), false);
assertEquals(booleans_it.hasNext(), true);
assertEquals(booleans_it.next().booleanValue(), true);
assertEquals(booleans_it.hasNext(), false);
config.addListItem("stringlist", "thestring");
config.addListItem("stringlist", "anotherstring");
config.addListItem("stringlist", true);
config.addListItem("stringlist", "athirdstring");
booleans = config.getBoolItems("stringlist");
assertEquals(4, booleans.size());
booleans_it = booleans.iterator();
assertEquals(booleans_it.hasNext(), true);
assertEquals(booleans_it.next().booleanValue(), false);
assertEquals(booleans_it.hasNext(), true);
assertEquals(booleans_it.next().booleanValue(), false);
assertEquals(booleans_it.hasNext(), true);
assertEquals(booleans_it.next().booleanValue(), true);
assertEquals(booleans_it.hasNext(), true);
assertEquals(booleans_it.next().booleanValue(), false);
assertEquals(booleans_it.hasNext(), false);
Collection<String> items = config.getStringItems("stringlist");
assertEquals(items.size(), 4);
Iterator<String>item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "thestring");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "anotherstring");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "true");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "athirdstring");
assertEquals(item_it.hasNext(), false);
}
public void testListChar()
{
Config config = new Config();
Collection<Character> chars = null;
config.addListItem("charlist", 'G');
config.addListItem("charlist", 'i');
config.addListItem("charlist", 'M');
chars = config.getCharItems("charlist");
assertEquals(3, chars.size());
Iterator<Character> chars_it = chars.iterator();
assertEquals(chars_it.hasNext(), true);
assertEquals(chars_it.next().charValue(), 'G');
assertEquals(chars_it.hasNext(), true);
assertEquals(chars_it.next().charValue(), 'i');
assertEquals(chars_it.hasNext(), true);
assertEquals(chars_it.next().charValue(), 'M');
assertEquals(chars_it.hasNext(), false);
config.addListItem("stringlist", "thestring");
config.addListItem("stringlist", "anotherstring");
config.addListItem("stringlist", 'O');
config.addListItem("stringlist", "athirdstring");
chars = config.getCharItems("stringlist");
assertEquals(4, chars.size());
chars_it = chars.iterator();
assertEquals(chars_it.hasNext(), true);
assertEquals(chars_it.next().charValue(), 't');
assertEquals(chars_it.hasNext(), true);
assertEquals(chars_it.next().charValue(), 'a');
assertEquals(chars_it.hasNext(), true);
assertEquals(chars_it.next().charValue(), 'O');
assertEquals(chars_it.hasNext(), true);
assertEquals(chars_it.next().charValue(), 'a');
assertEquals(chars_it.hasNext(), false);
Collection<String> items = config.getStringItems("stringlist");
assertEquals(items.size(), 4);
Iterator<String>item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "thestring");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "anotherstring");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "O");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "athirdstring");
assertEquals(item_it.hasNext(), false);
}
public void testListInt()
{
Config config = new Config();
Collection<Integer> ints = null;
config.addListItem("intlist", 96285);
config.addListItem("intlist", 1596);
config.addListItem("intlist", 4174);
ints = config.getIntItems("intlist");
assertEquals(3, ints.size());
Iterator<Integer> ints_it = ints.iterator();
assertEquals(ints_it.hasNext(), true);
assertEquals(ints_it.next().intValue(), 96285);
assertEquals(ints_it.hasNext(), true);
assertEquals(ints_it.next().intValue(), 1596);
assertEquals(ints_it.hasNext(), true);
assertEquals(ints_it.next().intValue(), 4174);
assertEquals(ints_it.hasNext(), false);
config.addListItem("stringlist", "thestring");
config.addListItem("stringlist", "anotherstring");
config.addListItem("stringlist", 88646);
config.addListItem("stringlist", "athirdstring");
ints = config.getIntItems("stringlist");
assertEquals(1, ints.size());
ints_it = ints.iterator();
assertEquals(ints_it.hasNext(), true);
assertEquals(ints_it.next().intValue(), 88646);
assertEquals(ints_it.hasNext(), false);
Collection<String> items = config.getStringItems("stringlist");
assertEquals(items.size(), 4);
Iterator<String>item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "thestring");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "anotherstring");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "88646");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "athirdstring");
assertEquals(item_it.hasNext(), false);
}
public void testListLong()
{
Config config = new Config();
Collection<Long> longs = null;
config.addListItem("longlist", 69778249L);
config.addListItem("longlist", 6687792094L);
config.addListItem("longlist", 24425829L);
longs = config.getLongItems("longlist");
assertEquals(3, longs.size());
Iterator<Long> longs_it = longs.iterator();
assertEquals(longs_it.hasNext(), true);
assertEquals(longs_it.next().longValue(), 69778249L);
assertEquals(longs_it.hasNext(), true);
assertEquals(longs_it.next().longValue(), 6687792094L);
assertEquals(longs_it.hasNext(), true);
assertEquals(longs_it.next().longValue(), 24425829L);
assertEquals(longs_it.hasNext(), false);
config.addListItem("stringlist", "thestring");
config.addListItem("stringlist", "anotherstring");
config.addListItem("stringlist", 7098634812L);
config.addListItem("stringlist", "athirdstring");
longs = config.getLongItems("stringlist");
assertEquals(1, longs.size());
longs_it = longs.iterator();
assertEquals(longs_it.hasNext(), true);
assertEquals(longs_it.next().longValue(), 7098634812L);
assertEquals(longs_it.hasNext(), false);
Collection<String> items = config.getStringItems("stringlist");
assertEquals(items.size(), 4);
Iterator<String>item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "thestring");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "anotherstring");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "7098634812");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "athirdstring");
assertEquals(item_it.hasNext(), false);
}
public void testListFloat()
{
Config config = new Config();
Collection<Float> floats = null;
config.addListItem("floatlist", 425.68f);
config.addListItem("floatlist", 9682.54f);
config.addListItem("floatlist", 134.98f);
floats = config.getFloatItems("floatlist");
assertEquals(3, floats.size());
Iterator<Float> floats_it = floats.iterator();
assertEquals(floats_it.hasNext(), true);
assertEquals(floats_it.next(), 425.68f);
assertEquals(floats_it.hasNext(), true);
assertEquals(floats_it.next(), 9682.54f);
assertEquals(floats_it.hasNext(), true);
assertEquals(floats_it.next(), 134.98f);
assertEquals(floats_it.hasNext(), false);
config.addListItem("stringlist", "thestring");
config.addListItem("stringlist", "anotherstring");
config.addListItem("stringlist", 4512.78f);
config.addListItem("stringlist", "athirdstring");
floats = config.getFloatItems("stringlist");
assertEquals(1, floats.size());
floats_it = floats.iterator();
assertEquals(floats_it.hasNext(), true);
assertEquals(floats_it.next(), 4512.78f);
assertEquals(floats_it.hasNext(), false);
Collection<String> items = config.getStringItems("stringlist");
assertEquals(items.size(), 4);
Iterator<String>item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "thestring");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "anotherstring");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "4512.78");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "athirdstring");
assertEquals(item_it.hasNext(), false);
}
public void testListDouble()
{
Config config = new Config();
Collection<Double> doubles = null;
config.addListItem("doublelist", 69978.23524d);
config.addListItem("doublelist", 413387.23451d);
config.addListItem("doublelist", 441534.79798d);
doubles = config.getDoubleItems("doublelist");
assertEquals(3, doubles.size());
Iterator<Double> doubles_it = doubles.iterator();
assertEquals(doubles_it.hasNext(), true);
assertEquals(doubles_it.next(), 69978.23524d);
assertEquals(doubles_it.hasNext(), true);
assertEquals(doubles_it.next(), 413387.23451d);
assertEquals(doubles_it.hasNext(), true);
assertEquals(doubles_it.next(), 441534.79798d);
assertEquals(doubles_it.hasNext(), false);
config.addListItem("stringlist", "thestring");
config.addListItem("stringlist", "anotherstring");
config.addListItem("stringlist", 551348.7986d);
config.addListItem("stringlist", "athirdstring");
doubles = config.getDoubleItems("stringlist");
assertEquals(1, doubles.size());
doubles_it = doubles.iterator();
assertEquals(doubles_it.hasNext(), true);
assertEquals(doubles_it.next(), 551348.7986d);
assertEquals(doubles_it.hasNext(), false);
Collection<String> items = config.getStringItems("stringlist");
assertEquals(items.size(), 4);
Iterator<String>item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "thestring");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "anotherstring");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "551348.7986");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "athirdstring");
assertEquals(item_it.hasNext(), false);
}
public void testListSerialization() throws SerializationUtilsErrorException
{
Config config = new Config();
SerializableClass serializable1 = new SerializableClass(459, "thestring");
SerializableClass serializable2 = new SerializableClass(69823, "anotherstring");
SerializableClass serializable3 = new SerializableClass(499417, "athirdstring");
Collection<SerializableClass> serializables = null;
try
{
config.addListItem("serializablelist", serializable1);
config.addListItem("serializablelist", serializable2);
config.addListItem("serializablelist", serializable3);
serializables = config.getSerializableItems("serializablelist");
}
catch (ConfigErrorException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
assertEquals(3, serializables.size());
Iterator<SerializableClass> serializables_it = serializables.iterator();
assertEquals(serializables_it.hasNext(), true);
assertEquals(serializables_it.next(), serializable1);
assertEquals(serializables_it.hasNext(), true);
assertEquals(serializables_it.next(), serializable2);
assertEquals(serializables_it.hasNext(), true);
assertEquals(serializables_it.next(), serializable3);
assertEquals(serializables_it.hasNext(), false);
config.addListItem("stringlist", "thestring");
config.addListItem("stringlist", "anotherstring");
try
{
config.addListItem("stringlist", serializable2);
}
catch (ConfigErrorException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
config.addListItem("stringlist", "athirdstring");
serializables = config.getSerializableItems("stringlist");
assertEquals(1, serializables.size());
serializables_it = serializables.iterator();
assertEquals(serializables_it.hasNext(), true);
assertEquals(serializables_it.next(), serializable2);
assertEquals(serializables_it.hasNext(), false);
Collection<String> items = config.getStringItems("stringlist");
assertEquals(items.size(), 4);
Iterator<String>item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "thestring");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "anotherstring");
assertEquals(item_it.hasNext(), true);
String serialized = item_it.next();
assertEquals(SerializationUtils.serializeToString(serializable2), serialized);
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "athirdstring");
assertEquals(item_it.hasNext(), false);
}
public void testFinalLists()
{
Config config = new Config();
Collection<String> items = null;
Iterator<String> item_it = null;
config.addListItem("final", "item1");
config.addListItem("final", "item2");
config.addListItem("final", "item3");
assertFalse(config.isFinalList("final"));
items = config.getStringItems("final");
assertEquals(items.size(), 3);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item1");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item2");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item3");
assertEquals(item_it.hasNext(), false);
config.setFinalList("final", true);
assertTrue(config.isFinalList("final"));
config.addListItem("final", "item4");
items = config.getStringItems("final");
assertEquals(items.size(), 3);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item1");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item2");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item3");
assertEquals(item_it.hasNext(), false);
config.clearList("final");
assertEquals(config.getStringItems("final").size(), 3);
config.removeList("final");
assertTrue(config.hasList("final"));
assertEquals(config.getStringItems("final").size(), 3);
config.setFinalList("final", false);
assertFalse(config.isFinalList("final"));
config.addListItem("final", "item4");
items = config.getStringItems("final");
assertEquals(items.size(), 4);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item1");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item2");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item3");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item4");
assertEquals(item_it.hasNext(), false);
config.clearList("final");
assertEquals(config.getStringItems("final").size(), 0);
config.removeList("final");
assertFalse(config.hasList("final"));
}
public void testXmlOutput() throws SerializationUtilsErrorException
{
Config config = new Config();
config.setParameter("paramstring", "astring");
config.setFinalParameter("paramstring", true);
config.setParameter("parambool", true);
config.setParameter("paramchar", 'C');
config.setParameter("paramint", 5133);
config.setParameter("paramlong", 8736478L);
config.setParameter("paramfloat", 545.2546f);
config.setParameter("paramdouble", 7863.3434353d);
config.addListItem("list1", "item1");
config.addListItem("list1", "item2");
config.addListItem("list1", "item3");
config.addListItem("list2", "item4");
config.addListItem("list2", "item5");
config.setFinalList("list2", true);
SerializableClass serializable1 = new SerializableClass(69823, "anotherstring");
SerializableClass serializable2 = new SerializableClass(459, "thestring");
SerializableClass serializable3 = new SerializableClass(499417, "athirdstring");
try
{
config.setParameter("paramserializable", serializable1);
config.addListItem("serializablelist", serializable2);
config.addListItem("serializablelist", serializable3);
}
catch (ConfigErrorException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
String xml = config.toXml();
assertEquals(xml, "<config>\n"+
"\t<list name=\"list1\">\n"+
"\t\t<item>item1</item>\n"+
"\t\t<item>item2</item>\n"+
"\t\t<item>item3</item>\n"+
"\t</list>\n"+
"\t<list name=\"list2\" final=\"true\">\n"+
"\t\t<item>item4</item>\n"+
"\t\t<item>item5</item>\n"+
"\t</list>\n"+
"\t<list name=\"serializablelist\">\n"+
"\t\t<item>"+SerializationUtils.serializeToString(serializable2)+"</item>\n"+
"\t\t<item>"+SerializationUtils.serializeToString(serializable3)+"</item>\n"+
"\t</list>\n"+
"\t<param name=\"parambool\">true</param>\n"+
"\t<param name=\"paramchar\">C</param>\n"+
"\t<param name=\"paramdouble\">7863.3434353</param>\n"+
"\t<param name=\"paramfloat\">545.2546</param>\n"+
"\t<param name=\"paramint\">5133</param>\n"+
"\t<param name=\"paramlong\">8736478</param>\n"+
"\t<param name=\"paramserializable\">"+SerializationUtils.serializeToString(serializable1)+"</param>\n"+
"\t<param name=\"paramstring\" final=\"true\">astring</param>\n"+
"</config>\n");
}
public void testStoreXml()
{
try
{
Config config = new Config();
config.setParameter("paramstring", "astring");
config.setFinalParameter("paramstring", true);
config.setParameter("parambool", true);
config.setParameter("paramchar", 'C');
config.setParameter("paramint", 5133);
config.setParameter("paramlong", 8736478L);
config.setParameter("paramfloat", 545.2546f);
config.setParameter("paramdouble", 7863.3434353d);
config.addListItem("list1", "item1");
config.addListItem("list1", "item2");
config.addListItem("list1", "item3");
config.addListItem("list2", "item4");
config.addListItem("list2", "item5");
config.setFinalList("list2", true);
String xml_filename = "config_storexml_test.xml";
String xml_path = RifeConfig.Global.getTempPath()+File.separator+xml_filename;
File xml_file = new File(xml_path);
config.storeToXml(xml_file);
Config config_stored = new Config(xml_filename, ResourceFinderClasspath.getInstance());
assertEquals(config_stored.countParameters(), 7);
assertTrue(config_stored.hasParameter("paramstring"));
assertTrue(config_stored.hasParameter("parambool"));
assertTrue(config_stored.hasParameter("paramchar"));
assertTrue(config_stored.hasParameter("paramint"));
assertTrue(config_stored.hasParameter("paramlong"));
assertTrue(config_stored.hasParameter("paramfloat"));
assertTrue(config_stored.hasParameter("paramdouble"));
assertEquals(config_stored.getString("paramstring"), "astring");
assertEquals(config_stored.getBool("parambool"), true);
assertEquals(config_stored.getChar("paramchar"), 'C');
assertEquals(config_stored.getInt("paramint"), 5133);
assertEquals(config_stored.getLong("paramlong"), 8736478L);
assertEquals(config_stored.getFloat("paramfloat"), 545.2546f, 0);
assertEquals(config_stored.getDouble("paramdouble"), 7863.3434353d, 0);
assertTrue(config_stored.isFinalParameter("paramstring"));
assertFalse(config_stored.isFinalParameter("parambool"));
assertFalse(config_stored.isFinalParameter("paramchar"));
assertFalse(config_stored.isFinalParameter("paramint"));
assertFalse(config_stored.isFinalParameter("paramlong"));
assertFalse(config_stored.isFinalParameter("paramfloat"));
assertFalse(config_stored.isFinalParameter("paramdouble"));
assertEquals(config_stored.countLists(), 2);
assertTrue(config_stored.hasList("list1"));
assertTrue(config_stored.hasList("list2"));
assertFalse(config_stored.isFinalList("list1"));
assertTrue(config_stored.isFinalList("list2"));
Collection<String> items = null;
Iterator<String> item_it = null;
items = config_stored.getStringItems("list1");
assertEquals(items.size(), 3);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item1");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item2");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item3");
assertEquals(item_it.hasNext(), false);
items = config_stored.getStringItems("list2");
assertEquals(items.size(), 2);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item4");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item5");
assertEquals(item_it.hasNext(), false);
config_stored.setParameter("paramstring2", "anotherstring");
config_stored.addListItem("list3", "item6");
config_stored.addListItem("list3", "item7");
assertTrue(config_stored.hasList("list3"));
config_stored.storeToXml();
Config config_stored2 = new Config(xml_filename, ResourceFinderClasspath.getInstance());
assertEquals(config_stored2.countParameters(), 8);
assertEquals(config_stored2.getString("paramstring2"), "anotherstring");
assertEquals(config_stored2.countLists(), 3);
assertTrue(config_stored2.hasList("list1"));
assertTrue(config_stored2.hasList("list2"));
assertTrue(config_stored2.hasList("list3"));
items = config_stored.getStringItems("list3");
assertEquals(items.size(), 2);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item6");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item7");
assertEquals(item_it.hasNext(), false);
xml_file.delete();
}
catch (ConfigErrorException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
public void testStorePreferences()
{
String preferences_path = "test_rifeconfig_preferences_integration";
Preferences preferences = Preferences.userRoot().node(preferences_path);
try
{
Config config = new Config();
config.setParameter("paramstring", "astring");
config.setParameter("paramstring2", "astring2");
config.setParameter("parambool", true);
config.setParameter("paramchar", 'C');
config.setParameter("paramint", 5133);
config.setParameter("paramlong", 8736478L);
config.setParameter("paramfloat", 545.2546f);
config.setParameter("paramdouble", 7863.3434353d);
config.addListItem("list1", "item1");
config.addListItem("list1", "item2");
config.addListItem("list1", "item3");
config.addListItem("list2", "item4");
config.addListItem("list2", "item5");
config.addListItem("list3", "item6");
config.addListItem("list3", "item7");
config.addListItem("list3", "item8");
config.storeToPreferences(preferences);
Config config_other = new Config();
assertEquals(config_other.countParameters(), 0);
config_other.setParameter("paramstring", "afirststring");
config_other.setParameter("paramstring2", "afirststring2");
config_other.setFinalParameter("paramstring2", true);
config_other.setParameter("paramstring3", "afirststring3");
config_other.setParameter("parambool", false);
config_other.setParameter("paramchar", 'D');
config_other.setParameter("paramint", 698);
config_other.setParameter("paramlong", 985835L);
config_other.setParameter("paramfloat", 978.14898f);
config_other.setParameter("paramdouble", 6098.1439724d);
config_other.addListItem("list1", "item1a");
config_other.addListItem("list1", "item2a");
config_other.addListItem("list2", "item3a");
config_other.setFinalList("list2", true);
assertEquals(config_other.countParameters(), 9);
assertTrue(config_other.hasList("list1"));
assertTrue(config_other.hasList("list2"));
assertTrue(config_other.hasParameter("paramstring"));
assertTrue(config_other.hasParameter("paramstring2"));
assertTrue(config_other.hasParameter("paramstring3"));
assertTrue(config_other.hasParameter("parambool"));
assertTrue(config_other.hasParameter("paramchar"));
assertTrue(config_other.hasParameter("paramint"));
assertTrue(config_other.hasParameter("paramlong"));
assertTrue(config_other.hasParameter("paramfloat"));
assertTrue(config_other.hasParameter("paramdouble"));
assertEquals(config_other.getString("paramstring"), "afirststring");
assertEquals(config_other.getString("paramstring2"), "afirststring2");
assertEquals(config_other.getString("paramstring3"), "afirststring3");
assertEquals(config_other.getBool("parambool"), false);
assertEquals(config_other.getChar("paramchar"), 'D');
assertEquals(config_other.getInt("paramint"), 698);
assertEquals(config_other.getLong("paramlong"), 985835L);
assertEquals(config_other.getFloat("paramfloat"), 978.14898f, 0);
assertEquals(config_other.getDouble("paramdouble"), 6098.1439724d, 0);
assertEquals(config_other.countLists(), 2);
Collection<String> items = null;
Iterator<String> item_it = null;
items = config_other.getStringItems("list1");
assertEquals(items.size(), 2);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item1a");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item2a");
assertEquals(item_it.hasNext(), false);
items = config_other.getStringItems("list2");
assertEquals(items.size(), 1);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item3a");
assertEquals(item_it.hasNext(), false);
config_other.setPreferencesNode(preferences);
assertEquals(config_other.countParameters(), 10);
assertTrue(config_other.hasParameter("paramstring"));
assertTrue(config_other.hasParameter("paramstring2"));
assertTrue(config_other.hasParameter("paramstring3"));
assertTrue(config_other.hasParameter("parambool"));
assertTrue(config_other.hasParameter("paramchar"));
assertTrue(config_other.hasParameter("paramint"));
assertTrue(config_other.hasParameter("paramlong"));
assertTrue(config_other.hasParameter("paramfloat"));
assertTrue(config_other.hasParameter("paramdouble"));
assertEquals(config_other.getString("paramstring"), "astring");
assertEquals(config_other.getString("paramstring2"), "afirststring2");
assertEquals(config_other.getString("paramstring3"), "afirststring3");
assertEquals(config_other.getBool("parambool"), true);
assertEquals(config_other.getChar("paramchar"), 'C');
assertEquals(config_other.getInt("paramint"), 5133);
assertEquals(config_other.getLong("paramlong"), 8736478L);
assertEquals(config_other.getFloat("paramfloat"), 545.2546f, 0);
assertEquals(config_other.getDouble("paramdouble"), 7863.3434353d, 0);
assertEquals(config_other.countLists(), 3);
assertTrue(config_other.hasList("list1"));
assertTrue(config_other.hasList("list2"));
assertTrue(config_other.hasList("list3"));
items = config_other.getStringItems("list1");
assertEquals(items.size(), 3);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item1");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item2");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item3");
assertEquals(item_it.hasNext(), false);
items = config_other.getStringItems("list2");
assertEquals(items.size(), 1);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item3a");
assertEquals(item_it.hasNext(), false);
items = config_other.getStringItems("list3");
assertEquals(items.size(), 3);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item6");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item7");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item8");
assertEquals(item_it.hasNext(), false);
config_other.removeParameter("paramint");
config_other.setParameter("paramstring3", "anotherstring");
config_other.addListItem("list1", "item9");
config_other.addListItem("list4", "item10");
config_other.addListItem("list4", "item11");
assertTrue(config_other.hasList("list4"));
config_other.storeToPreferences();
Config config_other2 = new Config();
config_other2.setParameter("paramstring2", "oncemoreastring");
config_other2.setPreferencesNode(preferences);
assertEquals(config_other2.countParameters(), 9);
assertFalse(config_other.hasParameter("paramint"));
assertNull(config_other.getString("paramint"));
assertTrue(config_other.hasParameter("paramstring2"));
assertEquals(config_other2.getString("paramstring2"), "astring2");
config_other2.setFinalParameter("paramstring2", true);
assertEquals(config_other2.getString("paramstring2"), "oncemoreastring");
assertTrue(config_other.hasParameter("paramstring3"));
assertEquals(config_other2.getString("paramstring3"), "anotherstring");
assertEquals(config_other2.countLists(), 4);
assertTrue(config_other2.hasList("list1"));
assertTrue(config_other2.hasList("list2"));
assertTrue(config_other2.hasList("list3"));
assertTrue(config_other2.hasList("list4"));
items = config_other2.getStringItems("list1");
assertEquals(items.size(), 4);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item1");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item2");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item3");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item9");
assertEquals(item_it.hasNext(), false);
items = config_other2.getStringItems("list2");
assertEquals(items.size(), 2);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item4");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item5");
assertEquals(item_it.hasNext(), false);
items = config_other.getStringItems("list3");
assertEquals(items.size(), 3);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item6");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item7");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item8");
assertEquals(item_it.hasNext(), false);
items = config_other2.getStringItems("list4");
assertEquals(items.size(), 2);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item10");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item11");
assertEquals(item_it.hasNext(), false);
Config config_other3 = new Config();
config_other3.setPreferencesNode(preferences);
assertEquals(config_other3.countLists(), 4);
assertTrue(config_other3.hasList("list1"));
assertTrue(config_other3.hasList("list2"));
assertTrue(config_other3.hasList("list3"));
assertTrue(config_other3.hasList("list4"));
items = config_other3.getStringItems("list1");
assertEquals(items.size(), 4);
items = config_other3.getStringItems("list2");
assertEquals(items.size(), 2);
items = config_other3.getStringItems("list3");
assertEquals(items.size(), 3);
items = config_other3.getStringItems("list4");
assertEquals(items.size(), 2);
config_other3.clearList("list2");
config_other3.removeList("list3");
assertEquals(config_other3.countLists(), 3);
assertTrue(config_other3.hasList("list1"));
assertTrue(config_other3.hasList("list2"));
assertFalse(config_other3.hasList("list3"));
assertTrue(config_other3.hasList("list4"));
items = config_other3.getStringItems("list1");
assertEquals(items.size(), 4);
items = config_other3.getStringItems("list2");
assertNull(items);
items = config_other3.getStringItems("list4");
assertEquals(items.size(), 2);
Config config_other4 = new Config();
config_other4.setPreferencesNode(preferences);
assertEquals(config_other4.countLists(), 3);
assertTrue(config_other4.hasList("list1"));
assertTrue(config_other4.hasList("list2"));
assertFalse(config_other4.hasList("list3"));
assertTrue(config_other4.hasList("list4"));
items = config_other4.getStringItems("list1");
assertEquals(items.size(), 4);
items = config_other4.getStringItems("list2");
assertNull(items);
items = config_other4.getStringItems("list4");
assertEquals(items.size(), 2);
}
catch (ConfigErrorException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
finally
{
try
{
preferences.removeNode();
}
catch (BackingStoreException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
}
public void testClone()
{
Config config1 = new Config();
config1.setParameter("paramstring", "astring");
config1.setFinalParameter("paramstring", true);
config1.setParameter("parambool", true);
config1.setParameter("paramchar", 'C');
config1.setParameter("paramint", 5133);
config1.setParameter("paramlong", 8736478L);
config1.setParameter("paramfloat", 545.2546f);
config1.setParameter("paramdouble", 7863.3434353d);
config1.addListItem("list1", "item1");
config1.addListItem("list1", "item2");
config1.addListItem("list1", "item3");
config1.addListItem("list2", "item4");
config1.addListItem("list2", "item5");
config1.setFinalList("list2", true);
Config config2 = config1.clone();
assertNotSame(config1, config2);
assertEquals(config1.toXml(), config2.toXml());
config2.setFinalParameter("paramstring", false);
config2.setParameter("paramstring", "astring2");
config2.setParameter("parambool", false);
config2.setFinalParameter("parambool", true);
config2.setParameter("paramchar", 'D');
config2.setParameter("paramint", 442);
config2.setParameter("paramlong", 9121L);
config2.setParameter("paramfloat", 112.87f);
config2.setParameter("paramdouble", 1313.2232887d);
config2.setParameter("paramnew", 2223);
config2.addListItem("list1", "item6");
config2.setFinalList("list1", true);
config2.setFinalList("list2", false);
config2.addListItem("list2", "item7");
config2.addListItem("list3", "item8");
assertFalse(config1.toXml().equals(config2.toXml()));
assertEquals(config1.countParameters(), 7);
assertTrue(config1.hasParameter("paramstring"));
assertTrue(config1.hasParameter("parambool"));
assertTrue(config1.hasParameter("paramchar"));
assertTrue(config1.hasParameter("paramint"));
assertTrue(config1.hasParameter("paramlong"));
assertTrue(config1.hasParameter("paramfloat"));
assertTrue(config1.hasParameter("paramdouble"));
assertEquals(config1.getString("paramstring"), "astring");
assertEquals(config1.getBool("parambool"), true);
assertEquals(config1.getChar("paramchar"), 'C');
assertEquals(config1.getInt("paramint"), 5133);
assertEquals(config1.getLong("paramlong"), 8736478L);
assertEquals(config1.getFloat("paramfloat"), 545.2546f, 0);
assertEquals(config1.getDouble("paramdouble"), 7863.3434353d, 0);
assertTrue(config1.isFinalParameter("paramstring"));
assertFalse(config1.isFinalParameter("parambool"));
assertFalse(config1.isFinalParameter("paramchar"));
assertFalse(config1.isFinalParameter("paramint"));
assertFalse(config1.isFinalParameter("paramlong"));
assertFalse(config1.isFinalParameter("paramfloat"));
assertFalse(config1.isFinalParameter("paramdouble"));
assertEquals(config1.countLists(), 2);
assertTrue(config1.hasList("list1"));
assertTrue(config1.hasList("list2"));
assertFalse(config1.isFinalList("list1"));
assertTrue(config1.isFinalList("list2"));
Collection<String> items = null;
Iterator<String> item_it = null;
items = config1.getStringItems("list1");
assertEquals(items.size(), 3);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item1");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item2");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item3");
assertEquals(item_it.hasNext(), false);
items = config1.getStringItems("list2");
assertEquals(items.size(), 2);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item4");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item5");
assertEquals(item_it.hasNext(), false);
assertEquals(config2.countParameters(), 8);
assertTrue(config2.hasParameter("paramstring"));
assertTrue(config2.hasParameter("parambool"));
assertTrue(config2.hasParameter("paramchar"));
assertTrue(config2.hasParameter("paramint"));
assertTrue(config2.hasParameter("paramlong"));
assertTrue(config2.hasParameter("paramfloat"));
assertTrue(config2.hasParameter("paramdouble"));
assertEquals(config2.getString("paramstring"), "astring2");
assertEquals(config2.getBool("parambool"), false);
assertEquals(config2.getChar("paramchar"), 'D');
assertEquals(config2.getInt("paramint"), 442);
assertEquals(config2.getLong("paramlong"), 9121L);
assertEquals(config2.getFloat("paramfloat"), 112.87f, 0);
assertEquals(config2.getDouble("paramdouble"), 1313.2232887d, 0);
assertEquals(config2.getInt("paramnew"), 2223);
assertFalse(config2.isFinalParameter("paramstring"));
assertTrue(config2.isFinalParameter("parambool"));
assertFalse(config2.isFinalParameter("paramchar"));
assertFalse(config2.isFinalParameter("paramint"));
assertFalse(config2.isFinalParameter("paramlong"));
assertFalse(config2.isFinalParameter("paramfloat"));
assertFalse(config2.isFinalParameter("paramdouble"));
assertFalse(config2.isFinalParameter("paramnew"));
assertEquals(config2.countLists(), 3);
assertTrue(config2.hasList("list1"));
assertTrue(config2.hasList("list2"));
assertTrue(config2.hasList("list3"));
assertTrue(config2.isFinalList("list1"));
assertFalse(config2.isFinalList("list2"));
assertFalse(config2.isFinalList("list3"));
items = config2.getStringItems("list1");
assertEquals(items.size(), 4);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item1");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item2");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item3");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item6");
assertEquals(item_it.hasNext(), false);
items = config2.getStringItems("list2");
assertEquals(items.size(), 3);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item4");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item5");
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item7");
assertEquals(item_it.hasNext(), false);
items = config2.getStringItems("list3");
assertEquals(items.size(), 1);
item_it = items.iterator();
assertEquals(item_it.hasNext(), true);
assertEquals(item_it.next(), "item8");
assertEquals(item_it.hasNext(), false);
}
}
class SerializableClass implements Serializable
{
private int mNumber = -1;
private String mString = null;
public SerializableClass(int number, String string)
{
mNumber = number;
mString = string;
}
public void setNumber(int number)
{
mNumber = number;
}
public int getNumber()
{
return mNumber;
}
public void setString(String string)
{
mString = string;
}
public String getString()
{
return mString;
}
public boolean equals(Object other)
{
if (this == other)
{
return true;
}
if (null == other)
{
return false;
}
if (!(other instanceof SerializableClass))
{
return false;
}
SerializableClass other_datalink = (SerializableClass)other;
if (!other_datalink.getString().equals(getString()))
{
return false;
}
if (other_datalink.getNumber() != getNumber())
{
return false;
}
return true;
}
}