blob: a1cba4dfab4e301998d33b4c38ca8ae6d00cabfd [file] [log] [blame]
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.digester.xmlrules;
import java.io.InputStream;
import java.io.StringReader;
import java.net.URL;
import java.util.ArrayList;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.commons.digester.Address;
import org.apache.commons.digester.Digester;
import org.apache.commons.digester.TestObjectCreationFactory;
import org.xml.sax.InputSource;
/**
* Tests loading Digester rules from an XML file.
*/
public class FromXmlRuleSetTest extends TestCase {
public FromXmlRuleSetTest(java.lang.String testName) {
super(testName);
}
public static void main(java.lang.String[] args) {
junit.textui.TestRunner.run(suite());
}
public static junit.framework.Test suite() {
TestSuite suite = new TestSuite(FromXmlRuleSetTest.class);
return suite;
}
/**
* Test the FromXmlRules.addRuleInstances(digester, path) method, ie
* test loading rules at a base position other than the root.
*/
public void testBasePath() throws Exception {
String xmlRules =
"<?xml version='1.0'?>" +
"<digester-rules>" +
" <pattern value='foo'>" +
" <call-method-rule " +
" methodname='setProperty' " +
" paramcount='0' />" +
" </pattern>" +
"</digester-rules>";
String xml =
"<?xml version='1.0'?>" +
"<root>" +
" <foo>success</foo>" +
"</root>";
// First try with no base path. The rule shouldn't match, because
// foo is not the root element.
{
TestObject testObject = new TestObject();
FromXmlRuleSet ruleset =
new FromXmlRuleSet(
new InputSource(new StringReader(xmlRules)));
Digester digester = new Digester();
ruleset.addRuleInstances(digester);
digester.push(testObject);
digester.parse(new InputSource(new StringReader(xml)));
assertEquals("", testObject.getProperty());
}
// Now try with a base path. The rule should now match.
{
TestObject testObject = new TestObject();
FromXmlRuleSet ruleset =
new FromXmlRuleSet(
new InputSource(new StringReader(xmlRules)));
Digester digester = new Digester();
ruleset.addRuleInstances(digester, "root");
digester.push(testObject);
digester.parse(new InputSource(new StringReader(xml)));
assertEquals("success", testObject.getProperty());
}
}
}