/** * Copyright (C) 2008 Orbeon, Inc. * * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU Lesser General Public License as published by the Free Software Foundation; either version * 2.1 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * The full text of the license is available at http://www.gnu.org/copyleft/lesser.html */ package org.orbeon.oxf.test; import junit.framework.TestCase; import org.orbeon.oxf.properties.PropertySet; import org.orbeon.oxf.properties.PropertyStore; import org.orbeon.oxf.xml.dom4j.Dom4jUtils; public class PropertiesTest extends TestCase { private PropertyStore propertyStore; private static final String PROPERTIES = "<properties xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n" + " <property as=\"xs:string\" name=\"test.orbeon.builder.form\" value=\"value0\"/>\n" + " <property as=\"xs:string\" name=\"test.*.builder.form\" value=\"value1\"/>\n" + " <property as=\"xs:string\" name=\"test.orbeon.*.form\" value=\"value2\"/>\n" + " <property as=\"xs:string\" name=\"test.*.*.form\" value=\"value3\"/>\n" + " <property as=\"xs:string\" name=\"test.orbeon.builder.*\" value=\"value4\"/>\n" + " <property as=\"xs:string\" name=\"test.*.builder.*\" value=\"value5\"/>\n" + " <property as=\"xs:string\" name=\"test.orbeon.*.*\" value=\"value6\"/>\n" + " <property as=\"xs:string\" name=\"test.*.*.*\" value=\"value7\"/>\n" + "</properties>"; protected void setUp() throws Exception { propertyStore = new PropertyStore(Dom4jUtils.readDom4j(PROPERTIES)); } public void testWildcardMatches() { final PropertySet propertySet = propertyStore.getGlobalPropertySet(); // Try to find one match per property assertEquals(propertySet.getString("test.orbeon.builder.form"), "value0"); assertEquals(propertySet.getString("test.foo.builder.form"), "value1"); assertEquals(propertySet.getString("test.orbeon.foo.form"), "value2"); assertEquals(propertySet.getString("test.foo.bar.form"), "value3"); assertEquals(propertySet.getString("test.orbeon.builder.foo"), "value4"); assertEquals(propertySet.getString("test.foo.builder.bar"), "value5"); assertEquals(propertySet.getString("test.orbeon.foo.bar"), "value6"); assertEquals(propertySet.getString("test.foo.bar.bat"), "value7"); } public void testExactMatches() { final PropertySet propertySet = propertyStore.getGlobalPropertySet(); // Ensure that exact matches are handled first (you would expect that wildcards would work here too, but for // now they don't work by design ;) assertEquals(propertySet.getString("test.orbeon.builder.form"), "value0"); assertEquals(propertySet.getString("test.*.builder.form"), "value1"); assertEquals(propertySet.getString("test.orbeon.*.form"), "value2"); assertEquals(propertySet.getString("test.*.*.form"), "value3"); assertEquals(propertySet.getString("test.orbeon.builder.*"), "value4"); assertEquals(propertySet.getString("test.*.builder.*"), "value5"); assertEquals(propertySet.getString("test.orbeon.*.*"), "value6"); assertEquals(propertySet.getString("test.*.*.*"), "value7"); } }