/*
* Copyright (C) 2004, 2005 Joe Walnes.
* Copyright (C) 2006, 2007, 2008 XStream Committers.
* All rights reserved.
*
* The software in this package is published under the terms of the BSD
* style license a copy of which has been included with this distribution in
* the LICENSE.txt file.
*
* Created on 23. February 2004 by Joe Walnes
*/
package com.thoughtworks.xstream.converters.collections;
import com.thoughtworks.xstream.XStream;
import junit.framework.TestCase;
import java.util.Properties;
public class PropertiesConverterTest extends TestCase {
public void testConvertsPropertiesObjectToShortKeyValueElements() {
Properties in = new Properties();
in.setProperty("hello", "world");
in.setProperty("foo", "cheese");
String expectedXML = "" +
"<properties>\n" +
" <property name=\"hello\" value=\"world\"/>\n" +
" <property name=\"foo\" value=\"cheese\"/>\n" +
"</properties>";
XStream xstream = new XStream();
String actualXML = xstream.toXML(in);
assertEquals(expectedXML, actualXML);
Properties expectedOut = new Properties();
expectedOut.setProperty("hello", "world");
expectedOut.setProperty("foo", "cheese");
Properties actualOut = (Properties) xstream.fromXML(actualXML);
assertEquals(in, actualOut);
assertEquals(in.toString(), actualOut.toString());
}
public void testIncludesDefaultProperties() {
Properties defaults = new Properties();
defaults.setProperty("host", "localhost");
defaults.setProperty("port", "80");
Properties override = new Properties(defaults);
override.setProperty("port", "999");
// sanity check
assertEquals("Unexpected overriden property", "999", override.getProperty("port"));
assertEquals("Unexpected default property", "localhost", override.getProperty("host"));
String expectedXML = "" +
"<properties>\n" +
" <property name=\"port\" value=\"999\"/>\n" +
" <defaults>\n" +
" <property name=\"port\" value=\"80\"/>\n" +
" <property name=\"host\" value=\"localhost\"/>\n" +
" </defaults>\n" +
"</properties>";
XStream xstream = new XStream();
String actualXML = xstream.toXML(override);
assertEquals(expectedXML, actualXML);
Properties out = (Properties) xstream.fromXML(actualXML);
assertEquals("Unexpected overriden property", "999", out.getProperty("port"));
assertEquals("Unexpected default property", "localhost", out.getProperty("host"));
assertEquals(override, out);
}
public void testCanSortElements() {
Properties defaults = new Properties();
defaults.setProperty("host", "localhost");
defaults.setProperty("port", "80");
Properties override = new Properties(defaults);
override.setProperty("port", "999");
override.setProperty("domain", "codehaus.org");
String expectedXML = "" +
"<properties>\n" +
" <property name=\"domain\" value=\"codehaus.org\"/>\n" +
" <property name=\"port\" value=\"999\"/>\n" +
" <defaults>\n" +
" <property name=\"host\" value=\"localhost\"/>\n" +
" <property name=\"port\" value=\"80\"/>\n" +
" </defaults>\n" +
"</properties>";
XStream xstream = new XStream();
xstream.registerConverter(new PropertiesConverter(true));
String actualXML = xstream.toXML(override);
assertEquals(expectedXML, actualXML);
Properties out = (Properties) xstream.fromXML(actualXML);
assertEquals("Unexpected overriden property", "999", out.getProperty("port"));
assertEquals("Unexpected default property", "localhost", out.getProperty("host"));
assertEquals(override, out);
}
}