pauldick    01/07/05 14:03:56

  Modified:    c/Tests/Compare compare.cpp
  Log:
  Whole slew of changes I don't want to lose.
  
  Revision  Changes    Path
  1.2       +131 -74   xml-xalan/c/Tests/Compare/compare.cpp
  
  Index: compare.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/Tests/Compare/compare.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- compare.cpp       2001/06/29 20:54:23     1.1
  +++ compare.cpp       2001/07/05 21:03:54     1.2
  @@ -80,8 +80,10 @@
   #include <XalanTransformer/XalanTransformer.hpp>
   #include <XalanTransformer/XalanCompiledStylesheetDefault.hpp>
   
  +#include <DOMSupport/DOMServices.hpp>
   #include <PlatformSupport/XalanOutputStreamPrintWriter.hpp>
   #include <PlatformSupport/XalanFileOutputStream.hpp>
  +#include <PlatformSupport/XalanUnicode.hpp>
   
   #include <XMLSupport/FormatterToXML.hpp>
   #include <XMLSupport/FormatterTreeWalker.hpp>
  @@ -109,8 +111,23 @@
   #include <crtdbg.h>
   #endif
   
  +char *xalanNodeTypes[]=
  +     {"UNKNOWN_NODE",
  +     "ELEMENT_NODE",
  +     "ATTRIBUTE_NODE",
  +     "TEXT_NODE",
  +     "CDATA_SECTION_NODE",
  +     "ENTITY_REFERENCE_NODE",
  +     "ENTITY_NODE",
  +     "PROCESSING_INSTRUCTION_NODE",
  +     "COMMENT_NODE",
  +     "DOCUMENT_NODE",
  +     "DOCUMENT_TYPE_NODE",
  +     "DOCUMENT_FRAGMENT_NODE",
  +     "NOTATION_NODE"};
  +
   bool 
  -domCompare(const XalanNode& gold ,const XalanNode& doc);
  +domCompare(const XalanNode& gold ,const XalanNode& doc, XalanDOMString 
fileName);
   
   void
   printArgOptions()
  @@ -248,102 +265,117 @@
   }
   
   
  -XalanDocument* getGoldDom(XalanSourceTreeParserLiaison& theParser, const 
XSLTInputSource&  goldInputSource)
  +void
  +reportError( XalanDOMString file, XalanDOMString node, char* msg)
   {
   
  -     return theParser.parseXMLStream(goldInputSource);
  +     cout << endl << "Failed "<< file << endl
  +              << "   Processing node : " << node << endl
  +              << "   " << msg ;
   }
   
  -/*
  -void
  -reportError(char* msg, int type, void& x)
  +
  +
  +bool diffATTR(const XalanNode* gAttr, const XalanNode* dAttr, const 
XalanDOMString& fileName)
   {
  -     switch (type)
  -     {
  -     case 1:
  -             {
  -                     cout << msg << "Expected: " << 
c_str(TranscodeToLocalCodePage(*x));
  -             }
   
  -     case 2:
  -             {
  -                     cout << "hello" << endl;
  -             }
  -     case 3:
  -             {
  -                     cout << "boo" << endl;
  -             }
  -     }
  -}
  +     const XalanDOMString& goldAttrName = gAttr->getNodeName();
  +     const XalanDOMString& docAttrName  = dAttr->getNodeName();
   
  -*/
   
  -bool diffATTR(const XalanNode* gAttr, const XalanNode* dAttr)
  -{
  -     //cout << "     Attr Name: " << 
c_str(TranscodeToLocalCodePage(goldData)) << endl;
  -                                             
  -     const XalanDOMString& goldAttrName = gAttr->getNodeValue();
  -     const XalanDOMString& docAttrName  = dAttr->getNodeValue();
  +#if !defined(NDEBUG) && defined(_MSC_VER)
  +     cout << "       Attribute is: " << 
c_str(TranscodeToLocalCodePage(goldAttrName)) << endl;
  +#endif
   
        const XalanDOMString& goldAttrNsUri = gAttr->getNamespaceURI();
  -     const XalanDOMString& docAttrNsUri  = dAttr->getNamespaceURI();
  +     const XalanDOMString& docAttrNsUri      = dAttr->getNamespaceURI();
   
  -     const XalanDOMString& goldAttrPrefix = gAttr->getPrefix();
  -     const XalanDOMString& docAttrPrefix = dAttr->getPrefix();
  +     //const XalanDOMString& goldAttrPrefix = gAttr->getPrefix();
  +     //const XalanDOMString& docAttrPrefix = dAttr->getPrefix();
   
  -     const XalanDOMString& goldAttrLName = gAttr->getLocalName();
  -     const XalanDOMString& docAttrLName = dAttr->getLocalName();
  +     //const XalanDOMString& goldAttrLName = gAttr->getLocalName();
  +     //const XalanDOMString& docAttrLName = dAttr->getLocalName();
  +     
  +     const XalanDOMString& goldAttrValue = gAttr->getNodeValue();
  +     const XalanDOMString& docAttrValue      = dAttr->getNodeValue();
   
  -     if (goldAttrName != docAttrName)
  +     if (goldAttrValue != docAttrValue)
        {
  -             cout << "Error6a: Wrong Attribute Value. Expecting: " << 
c_str(TranscodeToLocalCodePage(goldAttrName)) << endl;                          
                       
  -             //return false;
  +             reportError(fileName, docAttrName, "Error: Wrong Attribute 
Value. Expected: ");
  +             cout << c_str(TranscodeToLocalCodePage(goldAttrValue));         
                                        
  +             return false;
        }
   
        if (goldAttrNsUri != docAttrNsUri)
        {
  -             cout << "Error7a: Wrong NamespaceURI. Expecting: " << 
c_str(TranscodeToLocalCodePage(goldAttrNsUri)) << endl;                         
                          
  -             //return false;
  +             reportError(fileName, docAttrName, "Error: Wrong Attribute 
NamespaceURI. Expected: ");
  +             cout << c_str(TranscodeToLocalCodePage(goldAttrNsUri));         
                                        
  +             return false;
        }
   
  +/*   I think that these are not necessary. I assume that they will be caught 
earlier when
  +     checking for named attributes.
  +
        if (goldAttrPrefix != docAttrPrefix)
        {
  -             cout << "Error8a: Wrong Namespace Prefix. Expecting: " << 
c_str(TranscodeToLocalCodePage(goldAttrPrefix)) << endl;                        
                              
  -             //return false;
  +             reportError(fileName, "Error: Wrong Attribute Namespace Prefix. 
Expected: ",errAttrName);
  +             cout << c_str(TranscodeToLocalCodePage(goldAttrPrefix));        
                                                
  +             return false;
        }
   
        if (goldAttrLName != docAttrLName)
        {
  -             cout << "Error9a: Wrong LocalName. Expecting: " << 
c_str(TranscodeToLocalCodePage(goldAttrLName)) << endl;                         
                             
  -             //return false;
  +             reportError(fileName, "Error: Wrong Attribute LocalName. 
Expected: ",errAttrName);
  +             cout << c_str(TranscodeToLocalCodePage(goldAttrLName));         
                                        
  +             return false;
        }
  -
  +*/
        return true;
   }
   
   bool
  -diffElement(const XalanNode& gold, const XalanNode& doc)
  +diffElement(const XalanNode& gold, const XalanNode& doc, const 
XalanDOMString& fileName)
   {
        const XalanDOMString&  docNodeName  = doc.getNodeName();        
        const XalanDOMString&  goldNodeName = gold.getNodeName();
   
  -     const XalanDOMString&   docNsUri  = doc.getNamespaceURI();
  -     const XalanDOMString&   goldNsUri = gold.getNamespaceURI();
  +     const XalanDOMString&  docNsUri  = doc.getNamespaceURI();
  +     const XalanDOMString&  goldNsUri = gold.getNamespaceURI();
   
  -     cout << "Processing: " << c_str(TranscodeToLocalCodePage(docNodeName)) 
<< endl;
  -             
  +     //const XalanDOMString&  docPrefix = doc.getPrefix();
  +     //const XalanDOMString&  goldPrefix = gold.getPrefix();
  +
  +     //const XalanDOMString& docLName = doc.getLocalName();
  +     //const XalanDOMString& goldLName = gold.getLocalName();
  +
  +#if !defined(NDEBUG) && defined(_MSC_VER)
  +     cout << "Node is: " << c_str(TranscodeToLocalCodePage(docNodeName)) << 
endl;
  +#endif
  +
  +     // This essentially checks 2 things, that the prefix and localname are 
the
  +     // same.  So specific checks of these items are not necessary.
        if (goldNodeName != docNodeName)
  +     {
  +             reportError(fileName, docNodeName, "Error: Element mismatch. 
Expected: ");
  +             cout << c_str(TranscodeToLocalCodePage(goldNodeName));          
  +             return false;
  +     }
  +
  +     if ( goldNsUri != docNsUri)
        {
  -             cout << "Error2: Element mismatch. Expected: " << 
c_str(TranscodeToLocalCodePage(goldNodeName)) << endl;                
  +             reportError(fileName, docNodeName, "Error: Element NamespaceURI 
mismatch. Expected: ");
  +             cout << c_str(TranscodeToLocalCodePage(goldNsUri));
                return false;
        }
   
        if ( goldNsUri != docNsUri)
        {
  -             cout << "Error3: NamespaceURI mismatch. Expected: " << 
c_str(TranscodeToLocalCodePage(goldNsUri)) << endl;
  +             reportError(fileName, docNodeName, "Error: Element NamespaceURI 
mismatch. Expected: ");
  +             cout << c_str(TranscodeToLocalCodePage(goldNsUri));
                return false;
        }
   
  +
        // Get Attributes for each Element Node. 
        const XalanNamedNodeMap *goldAttrs = gold.getAttributes();
        const XalanNamedNodeMap *docAttrs  = doc.getAttributes();
  @@ -352,7 +384,7 @@
        int numGoldAttr = goldAttrs->getLength();
        int numDomAttr  = docAttrs ->getLength();
   
  -     // Check that each Element has same number of Attributes. 
  +     // Check that each Element has same number of Attributes. If they don't 
report error 
        if ( numGoldAttr == numDomAttr )
        {
                // Compare Attributes one at a time.
  @@ -365,19 +397,21 @@
                        XalanNode *dAttr = docAttrs->getNamedItem(goldAttrName);
                        if (dAttr != 0)
                        {
  -                             if( ! (diffATTR(gAttr, dAttr)) )
  +                             if( ! (diffATTR(gAttr, dAttr, fileName)) )
                                        return false;
                        }
                        else
                        {
  -                             cout << "Error5: Named Attribute missing. 
Expected: " << c_str(TranscodeToLocalCodePage(goldAttrName)) << endl;
  +                             reportError(fileName, docNodeName, "Error: 
Element missing named Attribute. Expected: ");
  +                             cout << 
c_str(TranscodeToLocalCodePage(goldAttrName));
                                return false;
                        }
                }
        }
        else
        {
  -             cout << "Error 4: Number of attributes mismatch. Expecting: " 
<< numGoldAttr << endl;
  +             reportError( fileName, docNodeName, "Error: Elements don't have 
same number of attributes. Expected: ");
  +             cout << numGoldAttr;;
                return false;
        }
   
  @@ -391,12 +425,13 @@
        {
                if (0 != domNextNode)
                {
  -                     if ( ! domCompare(*goldNextNode, *domNextNode) )
  +                     if ( ! domCompare(*goldNextNode, *domNextNode, 
fileName) )
                                return false;
                }
                else
                {
  -                     cout << "Error 10: Missing ChildNode. Expecting: " << 
c_str(TranscodeToLocalCodePage(goldNextNode->getNodeName())) << endl;
  +                     reportError(fileName, docNodeName, "Error: Element 
missing ChildNode. Expected: ");
  +                     cout <<  
c_str(TranscodeToLocalCodePage(goldNextNode->getNodeName()));
                        return false;
                }
        }
  @@ -408,12 +443,13 @@
        {
                if (0 != domNextNode)
                {
  -                     if ( ! domCompare(*goldNextNode, *domNextNode) )
  +                     if ( ! domCompare(*goldNextNode, *domNextNode, 
fileName) )
                                return false;
                }
                else
                {
  -                     cout << "Error 11: Missing SiblingNode. Expecting: " << 
c_str(TranscodeToLocalCodePage(goldNextNode->getNodeName())) << endl;
  +                     reportError(fileName, docNodeName, "Error: Element 
missing SiblingNode. Expected: ");
  +                     cout << 
c_str(TranscodeToLocalCodePage(goldNextNode->getNodeName()));
                        return false;
                }
        }
  @@ -423,7 +459,7 @@
   
   
   bool 
  -domCompare(const XalanNode& gold ,const XalanNode& doc)
  +domCompare(const XalanNode& gold ,const XalanNode& doc, const XalanDOMString 
fileName)
   {
        const XalanNode::NodeType       docNodeType  = doc.getNodeType();
        const XalanNode::NodeType       goldNodeType = gold.getNodeType();
  @@ -434,9 +470,22 @@
        const XalanDOMString&   docNodeValue  = doc.getNodeValue();
        const XalanDOMString&   goldNodeValue = gold.getNodeValue();
   
  +
  +     //const XalanDOMString&  docNsUri  = doc.getNamespaceURI();
  +     //const XalanDOMString&  goldNsUri = gold.getNamespaceURI();
  +
  +     //const XalanDOMString&  docPrefix = doc.getPrefix();
  +     //const XalanDOMString&  goldPrefix = gold.getPrefix();
  +
  +     //const XalanDOMString& docLName = doc.getLocalName();
  +     //const XalanDOMString& goldLName = gold.getLocalName();
  +
  +
  +
        if (goldNodeType != docNodeType)
        {
  -             cout << "Error1: NodeType mismatch. Expected: " << goldNodeType 
<< endl;                                
  +             reportError(fileName, docNodeName, "Error: NodeType mismatch. 
Expected: ");
  +             cout << xalanNodeTypes[goldNodeType];                           
                return false;
        }
   
  @@ -445,7 +494,7 @@
        case XalanNode::ELEMENT_NODE:   // ATTRIBUTE_NODE's are processed with 
diffElement().
        { 
   
  -             if ( ! diffElement(gold, doc) ) 
  +             if ( ! diffElement(gold, doc, fileName) ) 
                {
                        return false;
                }
  @@ -454,11 +503,15 @@
        }
        case XalanNode::TEXT_NODE:      
        {
  -             cout << "Processing: " << 
c_str(TranscodeToLocalCodePage(docNodeValue)) << endl;
   
  +#if !defined(NDEBUG) && defined(_MSC_VER)
  +             cout << "Node is: " << 
c_str(TranscodeToLocalCodePage(docNodeValue)) << endl;
  +#endif
  +             
                if(goldNodeValue != docNodeValue)
                {
  -                     cout << "Error7: Text node mismatch. Expected: " << 
c_str(TranscodeToLocalCodePage(goldNodeValue)) << endl;
  +                     reportError(fileName, docNodeName, "Error: Text node 
mismatch. Expected: ");
  +                     cout << c_str(TranscodeToLocalCodePage(goldNodeValue));
                        return false;
                }
   
  @@ -474,10 +527,14 @@
        }
        case XalanNode::DOCUMENT_NODE:
        {
  -             cout << "Processing: " << 
c_str(TranscodeToLocalCodePage(docNodeName)) << endl;
  +
  +#if !defined(NDEBUG) && defined(_MSC_VER)
  +             cout << "Node is: " << 
c_str(TranscodeToLocalCodePage(docNodeName)) << endl;
  +#endif
  +
                if (goldNodeName != docNodeName)  
                {
  -                     cout << "Error 8: Missing Document Node" << endl;
  +                     reportError(fileName, docNodeName, "Error: Missing 
Document Node");
                }
                else
                {
  @@ -489,7 +546,7 @@
   
                        if (0 != goldNextNode)
                        {
  -                             if( ! domCompare(*goldNextNode,*domNextNode) )
  +                             if( ! domCompare(*goldNextNode,*domNextNode, 
fileName) )
                                        return false;
                        }
   
  @@ -653,11 +710,6 @@
                                        XSLTResultTarget domResultTarget;
                                        
domResultTarget.setDocumentHandler(&domOut);
   
  -                                     cout << endl << files[i] << endl;
  -
  -                                     //XalanSourceTreeDocument* 
goldDom=getGoldDom(parserLiaison, goldInputSource);
  -                                     //XalanDocument* 
goldDom=getGoldDom(parserLiaison, goldInputSource);
  -
                                        //
                                        // Parsing(compile) the XSL stylesheet 
and report the results..
                                        //
  @@ -697,16 +749,21 @@
                                                theTreeWalker.traverse(dom);
                                                delete theFormatter;
   
  +                                             
                                                XalanDocument* goldDom = 
parserLiaison.parseXMLStream(goldInputSource);
  -                                             domCompare(*goldDom, *dom);
  +                                             if (domCompare(*goldDom, *dom, 
files[i]))
  +                                             {
  +                                                     cout << "Passed: " << 
c_str(TranscodeToLocalCodePage(files[i]));
  +                                             }
  +
                                        }
                                        else
                                        {
                                                cout << xalan.getLastError();
                                                return 0;
                                        }
  -
   
  +                                     parserLiaison.reset();
                                        xalan.destroyParsedSource(parsedSource);
                                        xalan.destroyStylesheet(compiledSS);
   
  
  
  

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

Reply via email to