[jboss-svn-commits] JBL Code SVN: r25757 - labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Mar 19 22:40:44 EDT 2009


Author: mark.proctor at jboss.com
Date: 2009-03-19 22:40:41 -0400 (Thu, 19 Mar 2009)
New Revision: 25757

Modified:
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamFactTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamGlobalTest.java
Log:
-hopefully now xml is no longer whitespace or element order dependent.

Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java	2009-03-20 00:57:49 UTC (rev 25756)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java	2009-03-20 02:40:41 UTC (rev 25757)
@@ -9,7 +9,13 @@
 import java.util.List;
 import java.util.Set;
 
+import junit.framework.TestCase;
+
+import org.custommonkey.xmlunit.Diff;
+import org.custommonkey.xmlunit.XMLAssert;
 import org.custommonkey.xmlunit.XMLTestCase;
+import org.custommonkey.xmlunit.XMLUnit;
+import org.custommonkey.xmlunit.examples.RecursiveElementNameAndTextQualifier;
 import org.drools.Cheese;
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseFactory;
@@ -32,8 +38,30 @@
 import org.drools.runtime.pipeline.Transformer;
 import org.xml.sax.SAXException;
 
-public class XStreamBatchExecutionTest extends XMLTestCase {
+public class XStreamBatchExecutionTest extends TestCase {
 
+    protected void setUp() throws Exception {
+        XMLUnit.setIgnoreComments( true );
+        XMLUnit.setIgnoreWhitespace( true );
+        XMLUnit.setIgnoreAttributeOrder( true );
+        XMLUnit.setNormalizeWhitespace( true );
+        XMLUnit.setNormalize( true );
+    }
+
+    private void assertXMLEqual(String expectedXml,
+                                String resultXml) {
+        try {
+            Diff diff = new Diff( expectedXml,
+                                  resultXml );
+            diff.overrideElementQualifier( new RecursiveElementNameAndTextQualifier() );
+            XMLAssert.assertXMLEqual( diff,
+                                      true );
+        } catch ( Exception e ) {
+            throw new RuntimeException( "XML Assertion failure",
+                                        e );
+        }
+    }
+
     public void testInsertObject() throws Exception {
         String str = "";
         str += "package org.drools \n";
@@ -44,7 +72,7 @@
         str += " \n";
         str += "  then \n";
         str += "    $c.setPrice( $c.getPrice() + 5 ); \n";
-        str += "end\n";        
+        str += "end\n";
 
         String inXml = "";
         inXml += "<batch-execution>";
@@ -56,31 +84,33 @@
         inXml += "    </org.drools.Cheese>";
         inXml += "  </insert>";
         inXml += "</batch-execution>";
-        
+
         StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();        
-        getPipeline(ksession).insert( inXml, resultHandler );        
-        String outXml = ( String ) resultHandler.getObject();
-        
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        getPipeline( ksession ).insert( inXml,
+                                        resultHandler );
+        String outXml = (String) resultHandler.getObject();
+
         String expectedXml = "";
         expectedXml += "<batch-execution-results>\n";
         expectedXml += "  <result identifier=\"outStilton\">\n";
         expectedXml += "    <org.drools.Cheese>\n";
         expectedXml += "      <type>stilton</type>\n";
-        expectedXml += "      <oldPrice>0</oldPrice>\n";        
+        expectedXml += "      <oldPrice>0</oldPrice>\n";
         expectedXml += "      <price>30</price>\n";
         expectedXml += "    </org.drools.Cheese>\n";
         expectedXml += "  </result>\n";
         expectedXml += "</batch-execution-results>\n";
-        
-        assertXMLEqual(expectedXml, outXml );
-        
-        BatchExecutionResults result = ( BatchExecutionResults ) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
-        Cheese stilton = ( Cheese ) result.getValue( "outStilton" );
+
+        assertXMLEqual( expectedXml,
+                        outXml );
+
+        BatchExecutionResults result = (BatchExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+        Cheese stilton = (Cheese) result.getValue( "outStilton" );
         assertEquals( 30,
-                      stilton.getPrice() );        
+                      stilton.getPrice() );
     }
-    
+
     public void testInsertElements() throws Exception {
         String str = "";
         str += "package org.drools \n";
@@ -93,13 +123,13 @@
         str += "  then \n";
         str += "    $c.setPrice( $c.getPrice() + 5 ); \n";
         str += "     list.add( $c );";
-        str += "end\n";        
+        str += "end\n";
 
         String inXml = "";
         inXml += "<batch-execution>";
         inXml += "  <set-global identifier='list' out='true'>";
         inXml += "    <list/>";
-        inXml += "  </set-global>";        
+        inXml += "  </set-global>";
         inXml += "  <insert-elements>";
         inXml += "    <org.drools.Cheese>";
         inXml += "      <type>stilton</type>";
@@ -111,47 +141,52 @@
         inXml += "      <price>30</price>";
         inXml += "      <oldPrice>0</oldPrice>";
         inXml += "    </org.drools.Cheese>";
-        inXml += "  </insert-elements>";      
+        inXml += "  </insert-elements>";
         inXml += "</batch-execution>";
-        
+
         StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();        
-        getPipeline(ksession).insert( inXml, resultHandler );        
-        String outXml = ( String ) resultHandler.getObject();
-        
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        getPipeline( ksession ).insert( inXml,
+                                        resultHandler );
+        String outXml = (String) resultHandler.getObject();
+
         String expectedXml = "";
         expectedXml += "<batch-execution-results>\n";
         expectedXml += "  <result identifier='list'>\n";
         expectedXml += "    <list>\n";
         expectedXml += "      <org.drools.Cheese>\n";
         expectedXml += "        <type>stilton</type>\n";
-        expectedXml += "        <price>35</price>\n";        
-        expectedXml += "        <oldPrice>0</oldPrice>\n";        
+        expectedXml += "        <price>35</price>\n";
+        expectedXml += "        <oldPrice>0</oldPrice>\n";
         expectedXml += "      </org.drools.Cheese>\n";
         expectedXml += "      <org.drools.Cheese>\n";
-        expectedXml += "        <type>stilton</type>\n";     
+        expectedXml += "        <type>stilton</type>\n";
         expectedXml += "        <price>30</price>\n";
-        expectedXml += "        <oldPrice>0</oldPrice>\n";           
+        expectedXml += "        <oldPrice>0</oldPrice>\n";
         expectedXml += "      </org.drools.Cheese>\n";
-        expectedXml += "    </list>\n";        
-        expectedXml += "  </result>\n";       
+        expectedXml += "    </list>\n";
+        expectedXml += "  </result>\n";
         expectedXml += "</batch-execution-results>\n";
-        
-        assertXMLEqual( expectedXml, outXml );
-        
-        BatchExecutionResults result = ( BatchExecutionResults ) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
-        
-        List list = ( List ) result.getValue( "list" );
-        Cheese stilton25 = new Cheese( "stilton", 30);
-        Cheese stilton30 = new Cheese( "stilton", 35);
-        
+
+        assertXMLEqual( expectedXml,
+                        outXml );
+
+        BatchExecutionResults result = (BatchExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+
+        List list = (List) result.getValue( "list" );
+        Cheese stilton25 = new Cheese( "stilton",
+                                       30 );
+        Cheese stilton30 = new Cheese( "stilton",
+                                       35 );
+
         Set expectedList = new HashSet();
         expectedList.add( stilton25 );
         expectedList.add( stilton30 );
-        
-        assertEquals( expectedList, new HashSet( list )); 
-    }    
-    
+
+        assertEquals( expectedList,
+                      new HashSet( list ) );
+    }
+
     public void testSetGlobal() throws Exception {
         String str = "";
         str += "package org.drools \n";
@@ -169,7 +204,7 @@
         str += "    list2.add( $c ); \n";
         str += "    list3.add( $c ); \n";
         str += "end\n";
-        
+
         String inXml = "";
         inXml += "<batch-execution>";
         inXml += "  <set-global identifier='list1'>";
@@ -192,10 +227,11 @@
 
         StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
         ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-        getPipeline(ksession).insert( inXml, resultHandler );
-        
-        String outXml = ( String ) resultHandler.getObject();
-        
+        getPipeline( ksession ).insert( inXml,
+                                        resultHandler );
+
+        String outXml = (String) resultHandler.getObject();
+
         String expectedXml = "";
         expectedXml += "<batch-execution-results>\n";
         expectedXml += "  <result identifier='list2'>\n";
@@ -213,25 +249,29 @@
         expectedXml += "    </list>\n";
         expectedXml += "  </result>\n";
         expectedXml += "</batch-execution-results>\n";
-        
-        assertXMLEqual(expectedXml, outXml ); 
-        
-        BatchExecutionResults result = ( BatchExecutionResults ) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
-        Cheese stilton = new Cheese( "stilton", 30 );
-        
+
+        assertXMLEqual( expectedXml,
+                        outXml );
+
+        BatchExecutionResults result = (BatchExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+        Cheese stilton = new Cheese( "stilton",
+                                     30 );
+
         assertNull( result.getValue( "list1" ) );
-        
-        List list2 = ( List ) result.getValue( "list2" );
-        assertEquals( 1, list2.size() );
-        assertEquals( stilton, list2.get( 0 ) );
-        
-          
-        
-        List list3 = ( List ) result.getValue( "outList3" );
-        assertEquals( 1, list3.size() );
-        assertEquals( stilton, list3.get( 0 ) );          
-    }    
-    
+
+        List list2 = (List) result.getValue( "list2" );
+        assertEquals( 1,
+                      list2.size() );
+        assertEquals( stilton,
+                      list2.get( 0 ) );
+
+        List list3 = (List) result.getValue( "outList3" );
+        assertEquals( 1,
+                      list3.size() );
+        assertEquals( stilton,
+                      list3.get( 0 ) );
+    }
+
     public void testGetGlobal() throws Exception {
         String str = "";
         str += "package org.drools \n";
@@ -243,13 +283,13 @@
         str += " \n";
         str += "  then \n";
         str += "    list.add( $c ); \n";
-        str += "end\n";        
+        str += "end\n";
 
         String inXml = "";
         inXml += "<batch-execution>";
         inXml += "  <set-global identifier='list'>";
         inXml += "    <list/>";
-        inXml += "  </set-global>";        
+        inXml += "  </set-global>";
         inXml += "  <insert>";
         inXml += "    <org.drools.Cheese>";
         inXml += "      <type>stilton</type>";
@@ -257,30 +297,32 @@
         inXml += "      <oldPrice>0</oldPrice>";
         inXml += "    </org.drools.Cheese>";
         inXml += "  </insert>";
-        inXml += "  <get-global identifier='list' out-identifier='out-list'/>";        
+        inXml += "  <get-global identifier='list' out-identifier='out-list'/>";
         inXml += "</batch-execution>";
-        
+
         StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();        
-        getPipeline(ksession).insert( inXml, resultHandler );        
-        String outXml = ( String ) resultHandler.getObject();
-        
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        getPipeline( ksession ).insert( inXml,
+                                        resultHandler );
+        String outXml = (String) resultHandler.getObject();
+
         String expectedXml = "";
         expectedXml += "<batch-execution-results>\n";
         expectedXml += "  <result identifier=\"out-list\">\n";
         expectedXml += "    <list>\n";
         expectedXml += "      <org.drools.Cheese>\n";
-        expectedXml += "        <type>stilton</type>\n";      
+        expectedXml += "        <type>stilton</type>\n";
         expectedXml += "        <price>25</price>\n";
-        expectedXml += "        <oldPrice>0</oldPrice>\n";          
+        expectedXml += "        <oldPrice>0</oldPrice>\n";
         expectedXml += "      </org.drools.Cheese>\n";
         expectedXml += "    </list>\n";
-        expectedXml += "  </result>\n";        
+        expectedXml += "  </result>\n";
         expectedXml += "</batch-execution-results>\n";
-        
-        assertXMLEqual(expectedXml, outXml );      
-    }    
-    
+
+        assertXMLEqual( expectedXml,
+                        outXml );
+    }
+
     public void testGetObjects() throws Exception {
         String str = "";
         str += "package org.drools \n";
@@ -291,10 +333,10 @@
         str += " \n";
         str += "  then \n";
         str += "    $c.setPrice( $c.getPrice() + 5 ); \n";
-        str += "end\n";        
+        str += "end\n";
 
         String inXml = "";
-        inXml += "<batch-execution>";       
+        inXml += "<batch-execution>";
         inXml += "  <insert-elements>";
         inXml += "    <org.drools.Cheese>";
         inXml += "      <type>stilton</type>";
@@ -309,44 +351,48 @@
         inXml += "  </insert-elements>";
         inXml += "  <get-objects out-identifier='list' />";
         inXml += "</batch-execution>";
-        
+
         StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();        
-        getPipeline(ksession).insert( inXml, resultHandler );        
-        String outXml = ( String ) resultHandler.getObject();
-        
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        getPipeline( ksession ).insert( inXml,
+                                        resultHandler );
+        String outXml = (String) resultHandler.getObject();
+
         String expectedXml = "";
-        expectedXml += "<batch-execution-results>\n";
-        expectedXml += "  <result identifier='list'>\n";
-        expectedXml += "    <list>\n";
-        expectedXml += "      <org.drools.Cheese>\n";
-        expectedXml += "        <type>stilton</type>\n";
-        expectedXml += "        <price>30</price>\n";        
-        expectedXml += "        <oldPrice>0</oldPrice>\n";        
-        expectedXml += "      </org.drools.Cheese>\n";
-        expectedXml += "      <org.drools.Cheese>\n";
-        expectedXml += "        <type>stilton</type>\n";     
-        expectedXml += "        <price>35</price>\n";
-        expectedXml += "        <oldPrice>0</oldPrice>\n";           
-        expectedXml += "      </org.drools.Cheese>\n";
-        expectedXml += "    </list>\n";        
-        expectedXml += "  </result>\n";
-        expectedXml += "</batch-execution-results>\n";
+        expectedXml += "<batch-execution-results>";
+        expectedXml += "  <result identifier='list'>";
+        expectedXml += "    <list>";
+        expectedXml += "      <org.drools.Cheese>";
+        expectedXml += "        <type>stilton</type>";
+        expectedXml += "        <price>30</price>";
+        expectedXml += "        <oldPrice>0</oldPrice>";
+        expectedXml += "      </org.drools.Cheese>";
+        expectedXml += "      <org.drools.Cheese>";
+        expectedXml += "        <type>stilton</type>";
+        expectedXml += "        <price>35</price>";
+        expectedXml += "        <oldPrice>0</oldPrice>";
+        expectedXml += "      </org.drools.Cheese>";
+        expectedXml += "    </list>";
+        expectedXml += "  </result>";
+        expectedXml += "</batch-execution-results>";
         
         assertXMLEqual( expectedXml, outXml );
-        
-        BatchExecutionResults result = ( BatchExecutionResults ) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
-        List list = ( List ) result.getValue( "list" );
-        Cheese stilton25 = new Cheese( "stilton", 30);
-        Cheese stilton30 = new Cheese( "stilton", 35);
-        
+
+        BatchExecutionResults result = (BatchExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+        List list = (List) result.getValue( "list" );
+        Cheese stilton25 = new Cheese( "stilton",
+                                       30 );
+        Cheese stilton30 = new Cheese( "stilton",
+                                       35 );
+
         Set expectedList = new HashSet();
         expectedList.add( stilton25 );
         expectedList.add( stilton30 );
-        
-        assertEquals( expectedList, new HashSet( list ));           	
+
+        assertEquals( expectedList,
+                      new HashSet( list ) );
     }
-    
+
     public void testQuery() throws Exception {
         String str = "";
         str += "package org.drools.test  \n";
@@ -358,8 +404,8 @@
         str += "query cheesesWithParams(String a, String b) \n";
         str += "    stilton : Cheese(type == a) \n";
         str += "    cheddar : Cheese(type == b, price == stilton.price) \n";
-        str += "end\n";        
-        
+        str += "end\n";
+
         String inXml = "";
         inXml += "<batch-execution>";
         inXml += "  <insert>";
@@ -398,95 +444,104 @@
         inXml += "</batch-execution>";
 
         StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();        
-        getPipeline(ksession).insert( inXml, resultHandler );        
-        String outXml = ( String ) resultHandler.getObject();
-        
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        getPipeline( ksession ).insert( inXml,
+                                        resultHandler );
+        String outXml = (String) resultHandler.getObject();
+
         String expectedXml = "";
-        expectedXml +="<batch-execution-results>\n";
-        expectedXml +="  <result identifier='cheeses'>\n";
-        expectedXml +="    <query-results>\n";
-        expectedXml +="      <identifiers>\n";
-        expectedXml +="        <identifier>stilton</identifier>\n";
-        expectedXml +="        <identifier>cheddar</identifier>\n";
-        expectedXml +="      </identifiers>\n";
-        expectedXml +="      <row>\n";
-        expectedXml +="        <org.drools.Cheese>\n";
-        expectedXml +="          <type>stilton</type>\n";
-        expectedXml +="          <price>2</price>\n";
-        expectedXml +="          <oldPrice>0</oldPrice>\n";
-        expectedXml +="        </org.drools.Cheese>\n";
-        expectedXml +="        <org.drools.Cheese>\n";
-        expectedXml +="          <type>cheddar</type>\n";
-        expectedXml +="          <price>2</price>\n";
-        expectedXml +="          <oldPrice>0</oldPrice>\n";
-        expectedXml +="        </org.drools.Cheese>\n";
-        expectedXml +="      </row>\n";
-        expectedXml +="      <row>\n";
-        expectedXml +="        <org.drools.Cheese>\n";
-        expectedXml +="          <type>stilton</type>\n";
-        expectedXml +="          <price>1</price>\n";
-        expectedXml +="          <oldPrice>0</oldPrice>\n";
-        expectedXml +="        </org.drools.Cheese>\n";
-        expectedXml +="        <org.drools.Cheese>\n";
-        expectedXml +="          <type>cheddar</type>\n";
-        expectedXml +="          <price>1</price>\n";
-        expectedXml +="          <oldPrice>0</oldPrice>\n";
-        expectedXml +="        </org.drools.Cheese>\n";
-        expectedXml +="      </row>\n";
-        expectedXml +="    </query-results>\n";
-        expectedXml +="  </result>\n";
-        expectedXml +="  <result identifier='cheeses2'>\n";
-        expectedXml +="    <query-results>\n";
-        expectedXml +="      <identifiers>\n";
-        expectedXml +="        <identifier>stilton</identifier>\n";
-        expectedXml +="        <identifier>cheddar</identifier>\n";
-        expectedXml +="      </identifiers>\n";
-        expectedXml +="      <row>\n";
-        expectedXml +="        <org.drools.Cheese reference=\"../../../../result/query-results/row/org.drools.Cheese\"/>\n";
-        expectedXml +="        <org.drools.Cheese reference=\"../../../../result/query-results/row/org.drools.Cheese[2]\"/>\n";
-        expectedXml +="      </row>\n";
-        expectedXml +="      <row>\n";
-        expectedXml +="        <org.drools.Cheese reference=\"../../../../result/query-results/row[2]/org.drools.Cheese\"/>\n";
-        expectedXml +="        <org.drools.Cheese reference=\"../../../../result/query-results/row[2]/org.drools.Cheese[2]\"/>\n";
-        expectedXml +="      </row>\n";
-        expectedXml +="    </query-results>\n";
-        expectedXml +="  </result>\n";        
-        expectedXml +="</batch-execution-results>\n";;
-        
-        assertXMLEqual(expectedXml, outXml ); 
-        
-        BatchExecutionResults batchResult = ( BatchExecutionResults ) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
-        
-        Cheese stilton1 = new Cheese( "stilton", 1);
-        Cheese cheddar1 = new Cheese( "cheddar", 1);
-        Cheese stilton2 = new Cheese( "stilton", 2);
-        Cheese cheddar2 = new Cheese( "cheddar", 2);  
-        
+        expectedXml += "<batch-execution-results>\n";
+        expectedXml += "  <result identifier='cheeses'>\n";
+        expectedXml += "    <query-results>\n";
+        expectedXml += "      <identifiers>\n";
+        expectedXml += "        <identifier>stilton</identifier>\n";
+        expectedXml += "        <identifier>cheddar</identifier>\n";
+        expectedXml += "      </identifiers>\n";
+        expectedXml += "      <row>\n";
+        expectedXml += "        <org.drools.Cheese>\n";
+        expectedXml += "          <type>stilton</type>\n";
+        expectedXml += "          <price>2</price>\n";
+        expectedXml += "          <oldPrice>0</oldPrice>\n";
+        expectedXml += "        </org.drools.Cheese>\n";
+        expectedXml += "        <org.drools.Cheese>\n";
+        expectedXml += "          <type>cheddar</type>\n";
+        expectedXml += "          <price>2</price>\n";
+        expectedXml += "          <oldPrice>0</oldPrice>\n";
+        expectedXml += "        </org.drools.Cheese>\n";
+        expectedXml += "      </row>\n";
+        expectedXml += "      <row>\n";
+        expectedXml += "        <org.drools.Cheese>\n";
+        expectedXml += "          <type>stilton</type>\n";
+        expectedXml += "          <price>1</price>\n";
+        expectedXml += "          <oldPrice>0</oldPrice>\n";
+        expectedXml += "        </org.drools.Cheese>\n";
+        expectedXml += "        <org.drools.Cheese>\n";
+        expectedXml += "          <type>cheddar</type>\n";
+        expectedXml += "          <price>1</price>\n";
+        expectedXml += "          <oldPrice>0</oldPrice>\n";
+        expectedXml += "        </org.drools.Cheese>\n";
+        expectedXml += "      </row>\n";
+        expectedXml += "    </query-results>\n";
+        expectedXml += "  </result>\n";
+        expectedXml += "  <result identifier='cheeses2'>\n";
+        expectedXml += "    <query-results>\n";
+        expectedXml += "      <identifiers>\n";
+        expectedXml += "        <identifier>stilton</identifier>\n";
+        expectedXml += "        <identifier>cheddar</identifier>\n";
+        expectedXml += "      </identifiers>\n";
+        expectedXml += "      <row>\n";
+        expectedXml += "        <org.drools.Cheese reference=\"../../../../result/query-results/row/org.drools.Cheese\"/>\n";
+        expectedXml += "        <org.drools.Cheese reference=\"../../../../result/query-results/row/org.drools.Cheese[2]\"/>\n";
+        expectedXml += "      </row>\n";
+        expectedXml += "      <row>\n";
+        expectedXml += "        <org.drools.Cheese reference=\"../../../../result/query-results/row[2]/org.drools.Cheese\"/>\n";
+        expectedXml += "        <org.drools.Cheese reference=\"../../../../result/query-results/row[2]/org.drools.Cheese[2]\"/>\n";
+        expectedXml += "      </row>\n";
+        expectedXml += "    </query-results>\n";
+        expectedXml += "  </result>\n";
+        expectedXml += "</batch-execution-results>\n";;
+
+        assertXMLEqual( expectedXml,
+                        outXml );
+
+        BatchExecutionResults batchResult = (BatchExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+
+        Cheese stilton1 = new Cheese( "stilton",
+                                      1 );
+        Cheese cheddar1 = new Cheese( "cheddar",
+                                      1 );
+        Cheese stilton2 = new Cheese( "stilton",
+                                      2 );
+        Cheese cheddar2 = new Cheese( "cheddar",
+                                      2 );
+
         Set set = new HashSet();
         List list = new ArrayList();
-        list.add(stilton1);
-        list.add(cheddar1);
+        list.add( stilton1 );
+        list.add( cheddar1 );
         set.add( list );
-        
+
         list = new ArrayList();
-        list.add(stilton2);
-        list.add(cheddar2);
+        list.add( stilton2 );
+        list.add( cheddar2 );
         set.add( list );
-        
-        org.drools.runtime.rule.QueryResults results = ( org.drools.runtime.rule.QueryResults) batchResult.getValue( "cheeses" );
-        assertEquals( 2, results.size() );        
-        assertEquals( 2, results.getIdentifiers().length );
+
+        org.drools.runtime.rule.QueryResults results = (org.drools.runtime.rule.QueryResults) batchResult.getValue( "cheeses" );
+        assertEquals( 2,
+                      results.size() );
+        assertEquals( 2,
+                      results.getIdentifiers().length );
         Set newSet = new HashSet();
         for ( org.drools.runtime.rule.QueryResultsRow result : results ) {
             list = new ArrayList();
             list.add( result.get( "stilton" ) );
-            list.add( result.get( "cheddar" ));
+            list.add( result.get( "cheddar" ) );
             newSet.add( list );
         }
-        assertEquals( set, newSet );  
-    }   
-    
+        assertEquals( set,
+                      newSet );
+    }
+
     public void testManualFireAllRules() throws Exception {
         String str = "";
         str += "package org.drools \n";
@@ -499,13 +554,13 @@
         str += "  then \n";
         str += "    $c.setPrice( $c.getPrice() + 5 ); \n";
         str += "    list.add( $c );";
-        str += "end\n";        
+        str += "end\n";
 
         String inXml = "";
         inXml += "<batch-execution>";
         inXml += "  <set-global identifier='list' out='true'>";
         inXml += "    <list/>";
-        inXml += "  </set-global>";        
+        inXml += "  </set-global>";
         inXml += "  <insert-elements>";
         inXml += "    <org.drools.Cheese>";
         inXml += "      <type>stilton</type>";
@@ -525,29 +580,30 @@
         inXml += "      <price>10</price>";
         inXml += "      <oldPrice>5</oldPrice>";
         inXml += "    </org.drools.Cheese>";
-        inXml += "  </insert>";          
+        inXml += "  </insert>";
         inXml += "</batch-execution>";
-        
+
         StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();        
-        getPipeline(ksession).insert( inXml, resultHandler );        
-        String outXml = ( String ) resultHandler.getObject();
-        
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        getPipeline( ksession ).insert( inXml,
+                                        resultHandler );
+        String outXml = (String) resultHandler.getObject();
+
         String expectedXml = "";
         expectedXml += "<batch-execution-results>\n";
         expectedXml += "  <result identifier='list'>\n";
         expectedXml += "    <list>\n";
         expectedXml += "      <org.drools.Cheese>\n";
         expectedXml += "        <type>stilton</type>\n";
-        expectedXml += "        <price>35</price>\n";        
-        expectedXml += "        <oldPrice>0</oldPrice>\n";        
+        expectedXml += "        <price>35</price>\n";
+        expectedXml += "        <oldPrice>0</oldPrice>\n";
         expectedXml += "      </org.drools.Cheese>\n";
         expectedXml += "      <org.drools.Cheese>\n";
-        expectedXml += "        <type>stilton</type>\n";     
+        expectedXml += "        <type>stilton</type>\n";
         expectedXml += "        <price>30</price>\n";
-        expectedXml += "        <oldPrice>0</oldPrice>\n";           
+        expectedXml += "        <oldPrice>0</oldPrice>\n";
         expectedXml += "      </org.drools.Cheese>\n";
-        expectedXml += "    </list>\n";        
+        expectedXml += "    </list>\n";
         expectedXml += "  </result>\n";
         expectedXml += "  <result identifier='outBrie'>\n";
         expectedXml += "    <org.drools.Cheese>\n";
@@ -555,81 +611,61 @@
         expectedXml += "      <price>10</price>\n";
         expectedXml += "      <oldPrice>5</oldPrice>\n";
         expectedXml += "    </org.drools.Cheese>\n";
-        expectedXml += "  </result>\n";          
+        expectedXml += "  </result>\n";
         expectedXml += "</batch-execution-results>\n";
-        assertXMLEqual( expectedXml, outXml );
-        
-        BatchExecutionResults result = ( BatchExecutionResults ) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
-        
+        assertXMLEqual( expectedXml,
+                        outXml );
+
+        BatchExecutionResults result = (BatchExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+
         // brie should not have been added to the list
-        List list = ( List ) result.getValue( "list" );
-        Cheese stilton25 = new Cheese( "stilton", 30);
-        Cheese stilton30 = new Cheese( "stilton", 35);
-        
+        List list = (List) result.getValue( "list" );
+        Cheese stilton25 = new Cheese( "stilton",
+                                       30 );
+        Cheese stilton30 = new Cheese( "stilton",
+                                       35 );
+
         Set expectedList = new HashSet();
         expectedList.add( stilton25 );
         expectedList.add( stilton30 );
-        
-        assertEquals( expectedList, new HashSet( list )); 
 
+        assertEquals( expectedList,
+                      new HashSet( list ) );
+
         // brie should not have changed
-        Cheese brie10 = new Cheese( "brie", 10);
+        Cheese brie10 = new Cheese( "brie",
+                                    10 );
         brie10.setOldPrice( 5 );
-        assertEquals( brie10, result.getValue( "outBrie" ) );  
-    }        
-    
-    public void testProcess() throws SAXException, IOException {
+        assertEquals( brie10,
+                      result.getValue( "outBrie" ) );
+    }
+
+    public void testProcess() throws SAXException,
+                             IOException {
         KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-        Reader source = new StringReader(
-            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-            "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" +
-            "         xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
-            "         xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n" +
-            "         type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n" +
-            "\n" +
-            "  <header>\n" +
-            "    <imports>\n" +
-            "      <import name=\"org.drools.TestVariable\" />\n" +
-            "    </imports>\n" +
-            "    <globals>\n" +
-            "      <global identifier=\"list\" type=\"java.util.List\" />\n" +
-            "    </globals>\n" +
-            "    <variables>\n" +
-            "      <variable name=\"person\" >\n" +
-            "        <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"TestVariable\" />\n" +
-            "      </variable>\n" +
-            "    </variables>\n" +
-            "  </header>\n" +
-            "\n" +
-            "  <nodes>\n" +
-            "    <start id=\"1\" name=\"Start\" />\n" +
-            "    <actionNode id=\"2\" name=\"MyActionNode\" >\n" +
-            "      <action type=\"expression\" dialect=\"mvel\" >System.out.println(\"Triggered\");\n" +
-            "list.add(person.name);\n" +
-            "</action>\n" +
-            "    </actionNode>\n" + 
-            "    <end id=\"3\" name=\"End\" />\n" +
-            "  </nodes>\n" +
-            "\n" +
-            "  <connections>\n" +
-            "    <connection from=\"1\" to=\"2\" />\n" +
-            "    <connection from=\"2\" to=\"3\" />\n" +
-            "  </connections>\n" +
-            "\n" +
-            "</process>");
-        kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF );
-        if ( kbuilder.hasErrors()) {
-            fail ( kbuilder.getErrors().toString() );
+        Reader source = new StringReader( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" + "         xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+                                          + "         xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n"
+                                          + "         type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n" + "\n" + "  <header>\n" + "    <imports>\n"
+                                          + "      <import name=\"org.drools.TestVariable\" />\n" + "    </imports>\n" + "    <globals>\n" + "      <global identifier=\"list\" type=\"java.util.List\" />\n" + "    </globals>\n" + "    <variables>\n"
+                                          + "      <variable name=\"person\" >\n" + "        <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"TestVariable\" />\n" + "      </variable>\n" + "    </variables>\n"
+                                          + "  </header>\n" + "\n" + "  <nodes>\n" + "    <start id=\"1\" name=\"Start\" />\n" + "    <actionNode id=\"2\" name=\"MyActionNode\" >\n"
+                                          + "      <action type=\"expression\" dialect=\"mvel\" >System.out.println(\"Triggered\");\n" + "list.add(person.name);\n" + "</action>\n" + "    </actionNode>\n" + "    <end id=\"3\" name=\"End\" />\n"
+                                          + "  </nodes>\n" + "\n" + "  <connections>\n" + "    <connection from=\"1\" to=\"2\" />\n" + "    <connection from=\"2\" to=\"3\" />\n" + "  </connections>\n" + "\n" + "</process>" );
+        kbuilder.add( ResourceFactory.newReaderResource( source ),
+                      ResourceType.DRF );
+        if ( kbuilder.hasErrors() ) {
+            fail( kbuilder.getErrors().toString() );
         }
 
         KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
         kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-        
+
         StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
         List<String> list = new ArrayList<String>();
-        ksession.setGlobal("list", list);
-        TestVariable person = new TestVariable("John Doe");
-        
+        ksession.setGlobal( "list",
+                            list );
+        TestVariable person = new TestVariable( "John Doe" );
+
         String inXml = "";
         inXml += "<batch-execution>";
         inXml += "  <startProcess processId='org.drools.actions'>";
@@ -637,31 +673,34 @@
         inXml += "       <org.drools.TestVariable>";
         inXml += "         <name>John Doe</name>";
         inXml += "    </org.drools.TestVariable>";
-        inXml += "    </parameter>";         
+        inXml += "    </parameter>";
         inXml += "  </startProcess>";
-        inXml += "  <get-global identifier='list' out-identifier='out-list'/>";        
+        inXml += "  <get-global identifier='list' out-identifier='out-list'/>";
         inXml += "</batch-execution>";
-                
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();        
-        getPipeline(ksession).insert( inXml, resultHandler );        
-        String outXml = ( String ) resultHandler.getObject();        
 
-        assertEquals(1, list.size());
-        assertEquals("John Doe", list.get(0));
-        
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        getPipeline( ksession ).insert( inXml,
+                                        resultHandler );
+        String outXml = (String) resultHandler.getObject();
+
+        assertEquals( 1,
+                      list.size() );
+        assertEquals( "John Doe",
+                      list.get( 0 ) );
+
         String expectedXml = "";
         expectedXml += "<batch-execution-results>\n";
         expectedXml += "  <result identifier=\"out-list\">\n";
         expectedXml += "    <list>\n";
         expectedXml += "      <string>John Doe</string>\n";
         expectedXml += "    </list>\n";
-        expectedXml += "  </result>\n";        
+        expectedXml += "  </result>\n";
         expectedXml += "</batch-execution-results>\n";
-        
-        assertXMLEqual(expectedXml, outXml );          
+
+        assertXMLEqual( expectedXml,
+                        outXml );
     }
 
-
     public void testInsertObjectWithDeclaredFact() throws Exception {
         String str = "";
         str += "package org.foo \n";
@@ -687,8 +726,9 @@
 
         StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
         ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-        getPipeline(ksession).insert( inXml, resultHandler );
-        String outXml = ( String ) resultHandler.getObject();
+        getPipeline( ksession ).insert( inXml,
+                                        resultHandler );
+        String outXml = (String) resultHandler.getObject();
 
         String expectedXml = "";
         expectedXml += "<batch-execution-results>\n";
@@ -701,12 +741,11 @@
         expectedXml += "  </result>\n";
         expectedXml += "</batch-execution-results>\n";
 
-        assertXMLEqual(expectedXml, outXml );
+        assertXMLEqual( expectedXml,
+                        outXml );
 
-
     }
 
-
     public void testInsertObjectStateful() throws Exception {
         String str = "";
         str += "package org.foo \n";
@@ -735,49 +774,47 @@
 
         StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
         ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-        getPipelineStateful(ksession).insert( inXml, resultHandler );
+        getPipelineStateful( ksession ).insert( inXml,
+                                                resultHandler );
 
         String nextXML = "<batch-execution><query out-identifier='matchingthings' name='results'/></batch-execution>";
-        getPipelineStateful(ksession).insert( nextXML, resultHandler );
-        String outXml = ( String ) resultHandler.getObject();
+        getPipelineStateful( ksession ).insert( nextXML,
+                                                resultHandler );
+        String outXml = (String) resultHandler.getObject();
 
-
         //we have not fired the rules yet
-        assertFalse(outXml.indexOf("<price>30</price>") > -1);
+        assertFalse( outXml.indexOf( "<price>30</price>" ) > -1 );
 
         ksession.fireAllRules();
 
         //ok lets try that again...
-        getPipelineStateful(ksession).insert( nextXML, resultHandler );
-        outXml = ( String ) resultHandler.getObject();
-        assertTrue(outXml.indexOf("<price>30</price>") > -1);
+        getPipelineStateful( ksession ).insert( nextXML,
+                                                resultHandler );
+        outXml = (String) resultHandler.getObject();
+        assertTrue( outXml.indexOf( "<price>30</price>" ) > -1 );
     }
-    
-    
-    
+
     private Pipeline getPipeline(StatelessKnowledgeSession ksession) {
         Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
-        
+
         Action assignResult = PipelineFactory.newAssignObjectAsResult();
         assignResult.setReceiver( executeResultHandler );
-        
+
         Transformer outTransformer = PipelineFactory.newXStreamToXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
         outTransformer.setReceiver( assignResult );
 
         KnowledgeRuntimeCommand batchExecution = PipelineFactory.newBatchExecutor();
         batchExecution.setReceiver( outTransformer );
 
-
         Transformer inTransformer = PipelineFactory.newXStreamFromXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
         inTransformer.setReceiver( batchExecution );
 
         Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
-        pipeline.setReceiver( inTransformer );  
-        
+        pipeline.setReceiver( inTransformer );
+
         return pipeline;
     }
 
-
     private Pipeline getPipelineStateful(StatefulKnowledgeSession ksession) {
         Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
 
@@ -790,7 +827,6 @@
         KnowledgeRuntimeCommand batchExecution = PipelineFactory.newBatchExecutor();
         batchExecution.setReceiver( outTransformer );
 
-
         Transformer inTransformer = PipelineFactory.newXStreamFromXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
         inTransformer.setReceiver( batchExecution );
 
@@ -800,7 +836,6 @@
         return pipeline;
     }
 
-
     public static class ResultHandlerImpl
         implements
         ResultHandler {
@@ -814,49 +849,45 @@
             return this.object;
         }
     }
-    
-        
+
     private StatelessKnowledgeSession getSession2(Resource resource) throws Exception {
         KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-        kbuilder.add( resource, ResourceType.DRL );
-        
-        if (kbuilder.hasErrors() ) {
+        kbuilder.add( resource,
+                      ResourceType.DRL );
+
+        if ( kbuilder.hasErrors() ) {
             System.out.println( kbuilder.getErrors() );
         }
-        
+
         assertFalse( kbuilder.hasErrors() );
         Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
 
         KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        
-       
+
         kbase.addKnowledgePackages( pkgs );
         StatelessKnowledgeSession session = kbase.newStatelessKnowledgeSession();
 
         return session;
     }
 
+    private StatefulKnowledgeSession getSessionStateful(Resource resource) throws Exception {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( resource,
+                      ResourceType.DRL );
 
-        private StatefulKnowledgeSession getSessionStateful(Resource resource) throws Exception {
-            KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-            kbuilder.add( resource, ResourceType.DRL );
+        if ( kbuilder.hasErrors() ) {
+            System.out.println( kbuilder.getErrors() );
+        }
 
-            if (kbuilder.hasErrors() ) {
-                System.out.println( kbuilder.getErrors() );
-            }
+        assertFalse( kbuilder.hasErrors() );
+        Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
 
-            assertFalse( kbuilder.hasErrors() );
-            Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
 
-            KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( pkgs );
+        StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
 
-           
-            kbase.addKnowledgePackages( pkgs );
-            StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
-
-            return session;
+        return session;
     }
 
-
-
 }

Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamFactTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamFactTest.java	2009-03-20 00:57:49 UTC (rev 25756)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamFactTest.java	2009-03-20 02:40:41 UTC (rev 25757)
@@ -5,6 +5,9 @@
 import junit.framework.TestCase;
 
 import org.custommonkey.xmlunit.Diff;
+import org.custommonkey.xmlunit.XMLAssert;
+import org.custommonkey.xmlunit.XMLUnit;
+import org.custommonkey.xmlunit.examples.RecursiveElementNameAndTextQualifier;
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseFactory;
 import org.drools.builder.KnowledgeBuilder;
@@ -23,6 +26,30 @@
 import com.thoughtworks.xstream.XStream;
 
 public class XStreamFactTest extends TestCase {
+    
+    protected void setUp() throws Exception {
+        XMLUnit.setIgnoreComments( true );
+        XMLUnit.setIgnoreWhitespace( true );
+        XMLUnit.setIgnoreAttributeOrder( true );
+        XMLUnit.setNormalizeWhitespace( true );
+        XMLUnit.setNormalize( true );
+    }
+
+    private void assertXMLEqual(String expectedXml,
+                                String resultXml) {
+        try {
+            Diff diff = new Diff( expectedXml,
+                                  resultXml );
+            diff.overrideElementQualifier( new RecursiveElementNameAndTextQualifier() );
+            XMLAssert.assertXMLEqual( diff,
+                                      true );
+        } catch ( Exception e ) {
+            throw new RuntimeException( "XML Assertion failure",
+                                        e );
+        }
+    }
+    
+    
     public void testFact() throws Exception {
         String xml = "";
         xml += "<list>\n";
@@ -85,7 +112,7 @@
         resultHandler = new ResultHandlerImpl();
         pipeline.insert( factHandle, resultHandler );  
         
-        assertTrue( new Diff( xml, (String) resultHandler.getObject() ).similar() );
+        assertXMLEqual( xml, (String) resultHandler.getObject() );
     }
     
     private static void assertEqualsIgnoreWhitespace(final String expected,

Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamGlobalTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamGlobalTest.java	2009-03-20 00:57:49 UTC (rev 25756)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamGlobalTest.java	2009-03-20 02:40:41 UTC (rev 25757)
@@ -3,6 +3,9 @@
 import junit.framework.TestCase;
 
 import org.custommonkey.xmlunit.Diff;
+import org.custommonkey.xmlunit.XMLAssert;
+import org.custommonkey.xmlunit.XMLUnit;
+import org.custommonkey.xmlunit.examples.RecursiveElementNameAndTextQualifier;
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseFactory;
 import org.drools.builder.KnowledgeBuilder;
@@ -20,6 +23,30 @@
 import com.thoughtworks.xstream.XStream;
 
 public class XStreamGlobalTest extends TestCase {
+    
+    protected void setUp() throws Exception {
+        XMLUnit.setIgnoreComments( true );
+        XMLUnit.setIgnoreWhitespace( true );
+        XMLUnit.setIgnoreAttributeOrder( true );
+        XMLUnit.setNormalizeWhitespace( true );
+        XMLUnit.setNormalize( true );
+    }
+
+    private void assertXMLEqual(String expectedXml,
+                                String resultXml) {
+        try {
+            Diff diff = new Diff( expectedXml,
+                                  resultXml );
+            diff.overrideElementQualifier( new RecursiveElementNameAndTextQualifier() );
+            XMLAssert.assertXMLEqual( diff,
+                                      true );
+        } catch ( Exception e ) {
+            throw new RuntimeException( "XML Assertion failure",
+                                        e );
+        }
+    }
+    
+    
     public void testGlobal() throws Exception {
         String xml = "";
         xml += "<list>\n";
@@ -77,10 +104,7 @@
         resultHandler = new ResultHandlerImpl();
         pipeline.insert( "list", resultHandler );  
         
-        System.out.println(xml);
-        System.out.println(resultHandler.getObject());
-        System.out.println(new Diff( xml, (String) resultHandler.getObject() ));
-        assertTrue( new Diff( xml, (String) resultHandler.getObject() ).similar() );
+        assertXMLEqual( xml, (String) resultHandler.getObject() );
     }
     
     private static void assertEqualsIgnoreWhitespace(final String expected,




More information about the jboss-svn-commits mailing list