pauldick    01/09/06 11:48:06

  Modified:    c/Tests/Harness FileUtility.hpp FileUtility.cpp
  Log:
  Interm checkin of new domcompare processing. This has modifications,
  but has yet to be cleaned up.  All tests compile (and run I think) with
  these changes.
  
  Revision  Changes    Path
  1.9       +38 -4     xml-xalan/c/Tests/Harness/FileUtility.hpp
  
  Index: FileUtility.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/Tests/Harness/FileUtility.hpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- FileUtility.hpp   2001/07/13 20:48:34     1.8
  +++ FileUtility.hpp   2001/09/06 18:48:06     1.9
  @@ -96,7 +96,7 @@
   /**
    * Utility call that extracts test file names from testsuite.  
    * @author Paul [EMAIL PROTECTED]
  - * @version $Id: FileUtility.hpp,v 1.8 2001/07/13 20:48:34 pauldick Exp $
  + * @version $Id: FileUtility.hpp,v 1.9 2001/09/06 18:48:06 pauldick Exp $
    */
   
   #if defined HARNESS_EXPORTS
  @@ -126,11 +126,29 @@
   
   public:
   
  +     struct reportStruct
  +     {
  +             XalanDOMString testOrFile;
  +             char* msg;
  +             XalanDOMString currentNode;
  +             XalanDOMString actual;
  +             XalanDOMString expected;
  +
  +             void reset()
  +             {
  +                     clear(testOrFile);
  +                     msg = "";
  +                     clear(currentNode);
  +                     clear(actual);
  +                     clear(expected);
  +             }
  +     } data ;
  +
        /** Simple constructor, does not perform initialization.  */
        FileUtility()
        {
  -
  -                     cout << endl << "Using Xerces Version " << 
gXercesFullVersionStr << endl;
  +             //reportStruct data;
  +             cout << endl << "Using Xerces Version " << 
gXercesFullVersionStr << endl;
        }
        
        /** 
  @@ -194,7 +212,12 @@
        /** 
        * Simplified version of above.
        */
  -     void
  +//   void
  +//   FileUtility::compareSerializedResults(const XSLTInputSource& 
transformResult,
  +//                                                           const 
XSLTInputSource& goldInputSource,
  +//                                                           XalanDOMString 
fileName, const char* testCase);
  +
  +     bool
        FileUtility::compareSerializedResults(const XSLTInputSource& 
transformResult,
                                                                const 
XSLTInputSource& goldInputSource,
                                                                XalanDOMString 
fileName, const char* testCase);
  @@ -241,6 +264,17 @@
        void 
        FileUtility::reportDOMError( XalanDOMString file, XalanDOMString node, 
char* msg);
   
  +     void
  +     FileUtility::reportDOMError();
  +
  +
  +private:
  +
  +void 
  +FileUtility::collectData(char* errmsg, 
  +                                              XalanDOMString currentnode, 
  +                                              XalanDOMString actdata, 
  +                                              XalanDOMString expdata);
   
   };        // end of class FileUtility
   #endif
  
  
  
  1.12      +125 -28   xml-xalan/c/Tests/Harness/FileUtility.cpp
  
  Index: FileUtility.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/Tests/Harness/FileUtility.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- FileUtility.cpp   2001/07/19 19:47:20     1.11
  +++ FileUtility.cpp   2001/09/06 18:48:06     1.12
  @@ -307,15 +307,16 @@
        XalanDocument* goldDom = parserLiaison.parseXMLStream(goldInputSource);
        if ( domCompare(*goldDom, *dom, fileName) )
        {
  -             cout << endl << "Passed: " << 
c_str(TranscodeToLocalCodePage(fileName));
  +             cout << endl << "Passed:  " << 
c_str(TranscodeToLocalCodePage(fileName)) << endl;
        }
   
   }
   
  -void
  +bool
   FileUtility::compareSerializedResults(const XSLTInputSource& transformResult,
                                                                        const 
XSLTInputSource& goldInputSource,
  -                                                                     
XalanDOMString fileName, const char* testCase)
  +                                                                     
XalanDOMString fileName , const char* testCase
  +                                                                     )
   {
        XalanSourceTreeDOMSupport domSupport;
        XalanSourceTreeParserLiaison parserLiaison(domSupport);
  @@ -325,9 +326,13 @@
        XalanDocument* transformDom = 
parserLiaison.parseXMLStream(transformResult);
        if ( domCompare(*goldDom, *transformDom, fileName) )
        {
  -             cout << endl << "Passed: " << testCase;
  +             return true;
  +             //cout << endl << "Passed: " << testCase;
        }
  -
  +     else 
  +     {
  +             return false;
  +     }
   }
   
   /*   This routine performs a DOM Comparision. 
  @@ -355,8 +360,13 @@
   
        if (goldNodeType != docNodeType)
        {
  +             collectData("Error: NodeType mismatch.",
  +                                     docNodeName,
  +                                     
XalanDOMString(xalanNodeTypes[docNodeType]),
  +                                     
XalanDOMString(xalanNodeTypes[goldNodeType]));
  +
                reportDOMError(fileName, docNodeName, "Error: NodeType 
mismatch. Expected: ");
  -             cout << xalanNodeTypes[goldNodeType];                           
  +             cout << xalanNodeTypes[goldNodeType] << endl;                   
        
                return false;
        }
   
  @@ -381,9 +391,14 @@
                
                if(goldNodeValue != docNodeValue)
                {
  +                     collectData("Error: Text node mismatch. ", 
  +                                              docNodeName,
  +                                              goldNodeValue,
  +                                              docNodeValue);
  +
                        reportDOMError(fileName, docNodeName, "Error: Text node 
mismatch. Expected: ");
  -                     cout << c_str(TranscodeToLocalCodePage(goldNodeValue));
  -                     cout << c_str(TranscodeToLocalCodePage(docNodeValue));
  +                     cout << c_str(TranscodeToLocalCodePage(goldNodeValue)) 
<< endl;
  +                     cout << c_str(TranscodeToLocalCodePage(docNodeValue)) 
<< endl;
                        return false;
                }
   
  @@ -402,8 +417,13 @@
                        }
                        else
                        {
  +                             collectData("Error: Element missing 
SiblingNode. ", 
  +                                              docNodeName,
  +                                              goldNextNode->getNodeName(),
  +                                              goldNextNode->getNodeName());
  +
                                reportDOMError(fileName, docNodeName, "Error: 
Element missing SiblingNode. Expected: ");
  -                             cout << 
c_str(TranscodeToLocalCodePage(goldNextNode->getNodeName()));
  +                             cout << 
c_str(TranscodeToLocalCodePage(goldNextNode->getNodeName())) << endl;
                                return false;
                        }
                }
  @@ -427,6 +447,7 @@
   
                if (goldNodeName != docNodeName)  
                {
  +                     assert(goldNodeName != docNodeName);
                        reportDOMError(fileName, docNodeName, "Error: Missing 
Document Node");
                }
                else
  @@ -495,26 +516,29 @@
        // same.  So specific checks of these items are not necessary.
        if (goldNodeName != docNodeName)
        {
  +             
  +             collectData("Error: Element mismatch. ", 
  +                                              docNodeName,
  +                                              goldNodeName,
  +                                              docNodeName);
  +             
                reportDOMError(fileName, docNodeName, "Error: Element mismatch. 
Expected: ");
  -             cout << c_str(TranscodeToLocalCodePage(goldNodeName));          
  +             cout << c_str(TranscodeToLocalCodePage(goldNodeName)) << endl;  
        
                return false;
        }
   
        if ( goldNsUri != docNsUri)
        {
  -             reportDOMError(fileName, docNodeName, "Error: Element 
NamespaceURI mismatch. Expected: ");
  -             cout << c_str(TranscodeToLocalCodePage(goldNsUri));
  -             return false;
  -     }
   
  -     if ( goldNsUri != docNsUri)
  -     {
  +             collectData("Error: Element NamespaceURI mismatch. ",
  +                                              docNodeName,
  +                                              goldNsUri,
  +                                              docNsUri);
                reportDOMError(fileName, docNodeName, "Error: Element 
NamespaceURI mismatch. Expected: ");
  -             cout << c_str(TranscodeToLocalCodePage(goldNsUri));
  +             cout << c_str(TranscodeToLocalCodePage(goldNsUri)) << endl;
                return false;
        }
   
  -
        // Get Attributes for each Element Node. 
        const XalanNamedNodeMap *goldAttrs = gold.getAttributes();
        const XalanNamedNodeMap *docAttrs  = doc.getAttributes();
  @@ -541,16 +565,29 @@
                        }
                        else
                        {
  +                             collectData("Error: Element missing named 
Attribute. ",
  +                                              docNodeName,
  +                                              goldAttrName,
  +                                              XalanDOMString("NOTHING"));
  +                             
                                reportDOMError(fileName, docNodeName, "Error: 
Element missing named Attribute. Expected: ");
  -                             cout << 
c_str(TranscodeToLocalCodePage(goldAttrName));
  +                             cout << 
c_str(TranscodeToLocalCodePage(goldAttrName)) << endl;
                                return false;
                        }
                }
        }
        else
        {
  +             char  buf1[2], buf2[2];
  +             sprintf(buf1, "%d", numGoldAttr);
  +             sprintf(buf2, "%d", numDomAttr);
  +             collectData("Error: Elements don't have same number of 
attributes. ",
  +                                              docNodeName,
  +                                              XalanDOMString(buf1),
  +                                              XalanDOMString(buf2));
  +
                reportDOMError( fileName, docNodeName, "Error: Elements don't 
have same number of attributes. Expected: ");
  -             cout << numGoldAttr;;
  +             cout << numGoldAttr << endl;
                return false;
        }
   
  @@ -569,8 +606,12 @@
                }
                else
                {
  +                     collectData("Error: Element missing ChildNode. ", 
  +                                              docNodeName,
  +                                              
XalanDOMString(goldNextNode->getNodeName()),
  +                                              XalanDOMString("NOTHING"));
                        reportDOMError(fileName, docNodeName, "Error: Element 
missing ChildNode. Expected: ");
  -                     cout <<  
c_str(TranscodeToLocalCodePage(goldNextNode->getNodeName()));
  +                     cout <<  
c_str(TranscodeToLocalCodePage(goldNextNode->getNodeName())) << endl;
                        return false;
                }
        }
  @@ -587,19 +628,39 @@
                }
                else
                {
  +                     collectData("Error: Element missing SiblingNode. ", 
  +                                              docNodeName,
  +                                              
XalanDOMString(goldNextNode->getNodeName()),
  +                                              XalanDOMString("NOTHING"));
  +
                        reportDOMError(fileName, docNodeName, "Error: Element 
missing SiblingNode. Expected: ");
  -                     cout << 
c_str(TranscodeToLocalCodePage(goldNextNode->getNodeName()));
  +                     cout << 
c_str(TranscodeToLocalCodePage(goldNextNode->getNodeName())) << endl;
                        return false;
                }
        }
        else if ( domNextNode)
        {
  -                     reportDOMError(fileName, docNodeName, "Error: 
Transformed Doc has additional sibling nodes: ");
  -                     cout << 
c_str(TranscodeToLocalCodePage(domNextNode->getNodeName())) << endl; 
  +
  +
  +//                   reportDOMError(fileName, docNodeName, "Error: 
Transformed Doc has additional sibling nodes: ");
  +//                   cout << 
c_str(TranscodeToLocalCodePage(domNextNode->getNodeName())) << endl; 
                        if ( domNextNode->getNodeType() == XalanNode::TEXT_NODE)
                        {
  -                             cout << "       "
  -                                      << "\"" << 
c_str(TranscodeToLocalCodePage(domNextNode->getNodeValue())) << "\"" << endl;
  +                             collectData("Error: Transformed Doc has 
additional sibling nodes: ", 
  +                                             docNodeName,
  +                                             XalanDOMString("NOTHING"),      
         
  +                                             
XalanDOMString(domNextNode->getNodeName()) + XalanDOMString("  \"") +
  +                                             
XalanDOMString(domNextNode->getNodeValue()) + XalanDOMString("\""));
  +//                           cout << "       "
  +//                                    << "\"" << 
c_str(TranscodeToLocalCodePage(domNextNode->getNodeValue())) << "\"" << endl;
  +                     }
  +                     else
  +                     {
  +                             collectData("Error: Transformed Doc has 
additional sibling node: ", 
  +                                             docNodeName,
  +                                             XalanDOMString("NOTHING"),      
         
  +                                             
XalanDOMString(domNextNode->getNodeName()));
  +
                        }
                        return false;
   
  @@ -644,15 +705,25 @@
   
        if (goldAttrValue != docAttrValue)
        {
  +             collectData("Error: Attribute Value mismatch. ",
  +                                              docAttrName,
  +                                              goldAttrValue,
  +                                              docAttrValue);
  +
                reportDOMError(fileName, docAttrName, "Error: Attribute Value 
mismatch. Expected: ");
  -             cout << c_str(TranscodeToLocalCodePage(goldAttrValue));         
                                        
  +             cout << c_str(TranscodeToLocalCodePage(goldAttrValue)) << endl; 
                                                
                return false;
        }
   
        if (goldAttrNsUri != docAttrNsUri)
        {
  +             collectData("Error: Attribute NamespaceURI mismatch. ", 
  +                                              docAttrName,
  +                                              goldAttrNsUri,
  +                                              docAttrNsUri);
  +
                reportDOMError(fileName, docAttrName, "Error: Attribute 
NamespaceURI mismatch. Expected: ");
  -             cout << c_str(TranscodeToLocalCodePage(goldAttrNsUri));         
                                        
  +             cout << c_str(TranscodeToLocalCodePage(goldAttrNsUri)) << endl; 
                                                
                return false;
        }
   
  @@ -667,6 +738,7 @@
   //                           
   */
   
  +
   void
   FileUtility::reportDOMError( XalanDOMString file, XalanDOMString node, char* 
msg)
   {
  @@ -674,5 +746,30 @@
        cout << endl << "Failed "<< file << endl
                 << "   Processing node : " << node << endl
                 << "   " << msg ;
  +}
  +
  +void
  +FileUtility::reportDOMError()
  +{
  +
  +     cout << endl << "** Failed "<< data.testOrFile 
  +              << "   " << data.msg << endl
  +              << "   " << "Processing Node: " << data.currentNode << endl
  +              << "   Expected: " << data.expected << endl
  +              << "   Actual: " << data.actual << endl;
  +
  +}
  +
  +void 
  +FileUtility::collectData(char* errmsg, XalanDOMString currentnode, 
XalanDOMString expdata, XalanDOMString actdata)
  +{
  +
  +     data.msg = errmsg;
  +     data.currentNode = currentnode;
  +     data.expected = expdata;
  +     data.actual = actdata;
  +
  +     reportDOMError();
  +
   }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to