package org.yajul.util;
import junit.framework.TestCase;
import java.util.List;
import java.util.Properties;
/**
* Test case for PropetiesHelper
* <br>
* User: Josh
* Date: Nov 14, 2009
* Time: 7:42:40 AM
*/
public class PropertiesHelperTest extends TestCase {
public void testAccessors() {
Properties properties = new Properties();
properties.put("should.be.true", "true");
assertTrue(PropertiesHelper.getBoolean(properties, "should.be.true"));
assertTrue(PropertiesHelper.getBoolean(properties, "does.not.exist", true));
assertFalse(PropertiesHelper.getBoolean(properties, "does.not.exist", false));
properties.put("an.integer", "1234");
assertEquals(1234, PropertiesHelper.getInt(properties, "an.integer", -1));
assertEquals(999, PropertiesHelper.getInt(properties, "does.not.exist", 999));
assertEquals(1234L, PropertiesHelper.getLong(properties, "an.integer", -1L));
assertEquals(999L, PropertiesHelper.getLong(properties, "does.not.exist", 999L));
assertEquals(new Integer(1234), PropertiesHelper.getInteger(properties, "an.integer"));
assertNull(PropertiesHelper.getInteger(properties, "does.not.exist"));
properties.put("a.double", "1234.56");
assertEquals(1234.56, PropertiesHelper.getDouble(properties, "a.double", -1));
assertEquals(9.99, PropertiesHelper.getDouble(properties, "does.not.exist", 9.99));
}
public void testBadIntegerProperty() {
Properties properties = new Properties();
properties.put("bad.integer", "12bad34");
Exception e = null;
try {
PropertiesHelper.getInt(properties, "bad.integer", -1);
} catch (NumberFormatException nfe) {
e = nfe;
}
assertNotNull("Expected number format exception!", e);
}
public void testBadBooleanProperty() {
Properties properties = new Properties();
properties.put("bad.bool", " true");
Exception e = null;
try {
PropertiesHelper.getBoolean(properties, "bad.bool", false, PropertiesHelper.BooleanParse.STRICT);
} catch (IllegalArgumentException iae) {
e = iae;
}
assertNotNull("Expected illegal argument exception!", e);
}
public void testLoaders() {
Properties props = PropertiesHelper.loadFromResource("test-properties.properties", null, this.getClass());
assertNotNull(props.get("this"));
assertNotNull(props.get("that"));
}
public void testNameList() {
Properties props = new Properties();
props.put("one", "abc");
props.put("two", "def");
props.put("a.three", "ghi");
List<String> names = PropertiesHelper.getNameList(props);
assertEquals(3, names.size());
assertTrue(names.contains("one"));
assertTrue(names.contains("two"));
assertTrue(names.contains("a.three"));
}
public void testInterpolator() {
Properties p = new Properties();
p.put("domain", "one.foo.com");
p.put("url", "http://${domain}:${portnumber}${path}");
String url = PropertiesHelper.interpolate(p.getProperty("url"), p);
assertEquals(url, "http://one.foo.com:${portnumber}${path}");
p.put("path", "/bar/baz");
String url2 = PropertiesHelper.interpolate(p.getProperty("url"), p);
assertEquals(url2, "http://one.foo.com:${portnumber}/bar/baz");
}
public void testInterpolateAll() {
Properties p = new Properties();
p.setProperty("path", "/bar/baz");
p.setProperty("domain", "one.foo.com");
p.setProperty("url", "http://${domain}:${portnumber}${path}");
p.setProperty("portnumber", "8080");
Properties interpolated = PropertiesHelper.interpolateAll(p);
assertEquals(interpolated.getProperty("url"), "http://one.foo.com:8080/bar/baz");
}
}