Author: skitching Date: Sun Mar 6 14:42:30 2005 New Revision: 156347 URL: http://svn.apache.org/viewcvs?view=rev&rev=156347 Log: Added tests for the "target offset" feature of CallMethodRule. Patch provided by Wendy Smoak.
Modified: jakarta/commons/proper/digester/trunk/src/test/org/apache/commons/digester/xmlrules/CallParamTestObject.java jakarta/commons/proper/digester/trunk/src/test/org/apache/commons/digester/xmlrules/DigesterLoaderRulesTest.java Modified: jakarta/commons/proper/digester/trunk/src/test/org/apache/commons/digester/xmlrules/CallParamTestObject.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/trunk/src/test/org/apache/commons/digester/xmlrules/CallParamTestObject.java?view=diff&r1=156346&r2=156347 ============================================================================== --- jakarta/commons/proper/digester/trunk/src/test/org/apache/commons/digester/xmlrules/CallParamTestObject.java (original) +++ jakarta/commons/proper/digester/trunk/src/test/org/apache/commons/digester/xmlrules/CallParamTestObject.java Sun Mar 6 14:42:30 2005 @@ -53,8 +53,17 @@ return middle; } - - + public void setLeft(String left) { + this.left=left; + } + + public void setRight(String right) { + this.right = right; + } + + public void setMiddle(String middle) { + this.middle = middle; + } public String toString() { return "LEFT: " + left + " MIDDLE:" + middle + " RIGHT:" + right; Modified: jakarta/commons/proper/digester/trunk/src/test/org/apache/commons/digester/xmlrules/DigesterLoaderRulesTest.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/trunk/src/test/org/apache/commons/digester/xmlrules/DigesterLoaderRulesTest.java?view=diff&r1=156346&r2=156347 ============================================================================== --- jakarta/commons/proper/digester/trunk/src/test/org/apache/commons/digester/xmlrules/DigesterLoaderRulesTest.java (original) +++ jakarta/commons/proper/digester/trunk/src/test/org/apache/commons/digester/xmlrules/DigesterLoaderRulesTest.java Sun Mar 6 14:42:30 2005 @@ -72,6 +72,61 @@ digester.parse(new InputSource(new StringReader(xml))); assertEquals("First param", "", testObject.getLeft()); assertEquals("Param with default set", "tester.test", testObject.getRight()); + } + + /** Test for call method rule with target offset */ + public void testCallMethodRuleTargetOffset() throws Exception { + String xmlRules = + "<?xml version='1.0'?>" + + "<digester-rules>" + + " <pattern value='root'>" + + " <pattern value='call-top-object'>" + + " <call-method-rule " + + " methodname='setMiddle' " + + " targetoffset='0' " + + " paramcount='1' " + + " paramtypes='java.lang.String' />" + + " <call-param-rule paramnumber='0' />" + + " </pattern>" + + " <pattern value='call-parent-object'>" + + " <call-method-rule " + + " methodname='setLeft' " + + " targetoffset='1' " + + " paramcount='1' " + + " paramtypes='java.lang.String' />" + + " <call-param-rule paramnumber='0' />" + + " </pattern>" + + " <pattern value='call-root-object'>" + + " <call-method-rule " + + " methodname='setRight' " + + " targetoffset='-1' " + + " paramcount='1' " + + " paramtypes='java.lang.String' />" + + " <call-param-rule paramnumber='0' />" + + " </pattern>" + + " </pattern>" + + "</digester-rules>"; + String xml = + "<?xml version='1.0'?>" + + "<root>" + + " <call-top-object>DataForTheTopObject</call-top-object>" + + " <call-parent-object>DataForTheParentObject</call-parent-object>" + + " <call-root-object>DataForTheRootObject</call-root-object>" + + "</root>"; + + CallParamTestObject testObjectA = new CallParamTestObject(); + CallParamTestObject testObjectB = new CallParamTestObject(); + CallParamTestObject testObjectC = new CallParamTestObject(); + Digester digester = DigesterLoader.createDigester(new InputSource(new StringReader(xmlRules))); + digester.push( testObjectA ); + digester.push( testObjectB ); + digester.push( testObjectC ); + digester.parse(new InputSource(new StringReader(xml))); + + assertEquals("Top object invoked", "DataForTheTopObject", testObjectC.getMiddle()); + assertEquals("Parent object invoked", "DataForTheParentObject", testObjectB.getLeft()); + assertEquals("Root object invoked", "DataForTheRootObject", testObjectA.getRight()); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]