pauldick    01/07/13 13:48:40

  Modified:    c/Tests/Harness FileUtility.cpp FileUtility.hpp Harness.dsp
                        HarnessInit.hpp
  Log:
  Many changes.  New comparision methods, consolidated where
  all includes happen
  
  Revision  Changes    Path
  1.10      +152 -53   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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- FileUtility.cpp   2001/07/11 20:23:40     1.9
  +++ FileUtility.cpp   2001/07/13 20:48:33     1.10
  @@ -30,25 +30,12 @@
   #include <crtdbg.h>
   #endif
   
  -//#include <Include/PlatformDefinitions.hpp>
  +// XERCES HEADERS...
  +//   Are included by HarnessInit.hpp
   
  -#include <framework/URLInputSource.hpp>
  -#include <util/PlatformUtils.hpp>
  -#include <util/XercesDefs.hpp>
  -
  -#include <XalanDOM/XalanNode.hpp>
  -#include <XalanDOM/XalanDocument.hpp>
  -#include <XalanDOM/XalanElement.hpp>
  -#include <XalanDOM/XalanNodeList.hpp>
  -
  -#include <XalanSourceTree/FormatterToSourceTree.hpp>
  -
  -#include <PlatformSupport/DoubleSupport.hpp>
  -#include <PlatformSupport/DirectoryEnumerator.hpp>
  -#include <PlatformSupport/DOMStringHelper.hpp>
  -#include <PlatformSupport/XalanUnicode.hpp>
  -#include <PlatformSupport/XalanOutputStreamPrintWriter.hpp>
  -#include <PlatformSupport/XalanStdOutputStream.hpp>
  +// XALAN HEADERS...
  +//   Are included by FileUtility.hpp
  +
   #include "FileUtility.hpp"
   
   bool diffElement(const XalanNode& gold, const XalanNode& doc, const XalanDOMString& 
fileName);
  @@ -213,10 +200,11 @@
   
   }
   
  -/*   This routine get Xerces Version number. 
  +//   This routine gets Xerces Version number. It's used to put the Xerces Version
  +//   into the output xml results file as an attribute of 'PerfData' element.
   //   Inputs: None
   //                           
  -*/
  +
   XalanDOMString FileUtility::getXercesVersion()
   {
   
  @@ -224,6 +212,124 @@
   
   }
   
  +/*   This routine creates a FormatterToXML FormatterListener. This is used to format
  +//   the output DOM so a comparision can be done with the expected GOLD file. 
  +//   Inputs: None
  +//                           
  +*/
  +
  +
  +FormatterListener* 
  +FileUtility::getXMLFormatter(bool            shouldWriteXMLHeader,
  +                             bool                                    stripCData,
  +                             bool                                    escapeCData,
  +                             PrintWriter&                    resultWriter,
  +                             int                                             
indentAmount,
  +                             const XalanDOMString&   mimeEncoding,
  +                             const StylesheetRoot*   stylesheet)
  +{
  +     FormatterListener*      formatter = 0;
  +
  +             XalanDOMString  version;
  +             bool                    outputIndent= 0;
  +             XalanDOMString  mediatype;
  +             XalanDOMString  doctypeSystem;
  +             XalanDOMString  doctypePublic;
  +             XalanDOMString  standalone;
  +
  +             if (stylesheet != 0)
  +             {
  +                     version = stylesheet->m_version;
  +
  +                     mediatype = stylesheet->m_mediatype;
  +                     doctypeSystem = stylesheet->getOutputDoctypeSystem();
  +                     doctypePublic = stylesheet->getOutputDoctypePublic();
  +                     standalone = stylesheet->m_standalone;
  +                     outputIndent = stylesheet->m_indentResult;
  +             }
  +
  +             FormatterToXML* const   fToXML =
  +                     new FormatterToXML(
  +                                     resultWriter,
  +                                     version,
  +                                     outputIndent,
  +                                     indentAmount,
  +                                     mimeEncoding,
  +                                     mediatype,
  +                                     doctypeSystem,
  +                                     doctypePublic,
  +                                     true,   // xmlDecl
  +                                     standalone);
  +
  +//           fToXML->setShouldWriteXMLHeader(shouldWriteXMLHeader);
  +//           fToXML->setStripCData(stripCData);
  +//           fToXML->setEscapeCData(escapeCData);
  +
  +             formatter = fToXML;
  +             return formatter;
  +}
  +
  +/*   This routine compares the results of a transform with the gold file.
  +//   It in turn call the domCompare routine to do the actual comparision. 
  +//   Inputs: 
  +//           gold - Dom tree for the expected results
  +//           doc  - Dom tree created during transformation
  +//           filename - Current filename
  +//           
  +//   Returns: 
  +//           Void
  +//           
  +*/
  +void
  +FileUtility::compareResults(const XalanDOMString& theOutputFile, 
  +                        const XalanCompiledStylesheet* compiledSS, 
  +                        XalanSourceTreeDocument* dom,
  +                        XalanDOMString fileName,
  +                        const XSLTInputSource& goldInputSource)
  +{
  +     const XalanDOMString mimeEncoding("whatever");
  +     XalanFileOutputStream myOutput(theOutputFile);
  +     XalanOutputStreamPrintWriter myResultWriter(myOutput);
  +     FormatterListener* theFormatter = getXMLFormatter(true,true,true,
  +                                                                                    
                                 myResultWriter,0,
  +                                                                                    
                                 mimeEncoding,
  +                                                                                    
                                 compiledSS->getStylesheetRoot());
  +
  +     FormatterTreeWalker theTreeWalker(*theFormatter);
  +     theTreeWalker.traverse(dom);
  +     delete theFormatter;
  +
  +
  +     XalanSourceTreeDOMSupport domSupport;
  +     XalanSourceTreeParserLiaison parserLiaison(domSupport);
  +     domSupport.setParserLiaison(&parserLiaison);
  +     
  +     XalanDocument* goldDom = parserLiaison.parseXMLStream(goldInputSource);
  +     if ( domCompare(*goldDom, *dom, fileName) )
  +     {
  +             cout << endl << "Passed: " << 
c_str(TranscodeToLocalCodePage(fileName));
  +     }
  +
  +}
  +
  +void
  +FileUtility::compareSerializedResults(const XSLTInputSource& transformResult,
  +                                                                     const 
XSLTInputSource& goldInputSource,
  +                                                                     XalanDOMString 
fileName, const char* testCase)
  +{
  +     XalanSourceTreeDOMSupport domSupport;
  +     XalanSourceTreeParserLiaison parserLiaison(domSupport);
  +     domSupport.setParserLiaison(&parserLiaison);
  +     
  +     XalanDocument* goldDom = parserLiaison.parseXMLStream(goldInputSource);
  +     XalanDocument* transformDom = parserLiaison.parseXMLStream(transformResult);
  +     if ( domCompare(*goldDom, *transformDom, fileName) )
  +     {
  +             cout << endl << "Passed: " << testCase;
  +     }
  +
  +}
  +
   /*   This routine performs a DOM Comparision. 
   //   Inputs: 
   //           gold - Dom tree for the expected results
  @@ -247,17 +353,6 @@
        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)
        {
                reportDOMError(fileName, docNodeName, "Error: NodeType mismatch. 
Expected: ");
  @@ -288,9 +383,31 @@
                {
                        reportDOMError(fileName, docNodeName, "Error: Text node 
mismatch. Expected: ");
                        cout << c_str(TranscodeToLocalCodePage(goldNodeValue));
  +                     cout << c_str(TranscodeToLocalCodePage(docNodeValue));
                        return false;
                }
   
  +             // Need to process textnode siblings.  Note that text nodes do not 
have child nodes.
  +             const XalanNode *goldNextNode;
  +             const XalanNode *domNextNode;
  +             goldNextNode = gold.getNextSibling();
  +             domNextNode = doc.getNextSibling();
  +
  +             if (0 != goldNextNode)
  +             {
  +                     if (0 != domNextNode)
  +                     {
  +                             if ( ! domCompare(*goldNextNode, *domNextNode, 
fileName) )
  +                                     return false;
  +                     }
  +                     else
  +                     {
  +                             reportDOMError(fileName, docNodeName, "Error: Element 
missing SiblingNode. Expected: ");
  +                             cout << 
c_str(TranscodeToLocalCodePage(goldNextNode->getNodeName()));
  +                             return false;
  +                     }
  +             }
  +
                break;
        }
        case XalanNode::CDATA_SECTION_NODE:
  @@ -482,9 +599,9 @@
   
   /*   This routine compares two attribute nodes. 
   //   Inputs: 
  -//           gold - Dom tree for the expected results
  -//           doc  - Dom tree created during transformation
  -//           filename - Current filenam
  +//           gAttr - attribute from Gold dom tree 
  +//           dAttr - attribute from Dom tree created during transformation
  +//           fileName - Current filenam
   //           
   //   Returns: 
   //           True or False
  @@ -494,11 +611,10 @@
   bool FileUtility::diffATTR(const XalanNode* gAttr, const XalanNode* dAttr, const 
XalanDOMString& fileName)
   {
   
  -     const XalanDOMString& goldAttrName = gAttr->getNodeName();
        const XalanDOMString& docAttrName  = dAttr->getNodeName();
   
  -
   #if !defined(NDEBUG) && defined(_MSC_VER)
  +     const XalanDOMString& goldAttrName = gAttr->getNodeName();
        cout << "       Attribute is: " << 
c_str(TranscodeToLocalCodePage(goldAttrName)) << endl;
   #endif
   
  @@ -528,23 +644,6 @@
                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)
  -     {
  -             reportDOMError(fileName, "Error: Attribute Namespace Prefix mismatch. 
Expected: ",errAttrName);
  -             cout << c_str(TranscodeToLocalCodePage(goldAttrPrefix));               
                                         
  -             return false;
  -     }
  -
  -     if (goldAttrLName != docAttrLName)
  -     {
  -             reportDOMError(fileName, "Error: Attribute LocalName mismatch. 
Expected: ",errAttrName);
  -             cout << c_str(TranscodeToLocalCodePage(goldAttrLName));                
                                 
  -             return false;
  -     }
  -*/
        return true;
   }
   
  
  
  
  1.8       +57 -10    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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- FileUtility.hpp   2001/07/11 17:47:01     1.7
  +++ FileUtility.hpp   2001/07/13 20:48:34     1.8
  @@ -59,7 +59,6 @@
   #if !defined(FILEUTILITY_HEADER_GUARD_1357924680)
   #define FILEUTILITY_HEADER_GUARD_1357924680
   
  -
   #include<string>
   #include<stdio.h>
   #include <time.h>
  @@ -69,21 +68,35 @@
   #else
   #include <iostream>
   #endif
  +
  +// XERCES HEADERS ... 
  +//   Are included in HarnessInit.hpp
  +
  +// XALAN HEADERS...
  +#include <PlatformSupport/XalanOutputStreamPrintWriter.hpp>
  +#include <PlatformSupport/XalanFileOutputStream.hpp>
  +#include <PlatformSupport/DirectoryEnumerator.hpp>
  +
  +#include <XPath/XObjectFactoryDefault.hpp>
  +#include <XPath/XPathFactoryDefault.hpp>
  +
  +#include <XMLSupport/FormatterToXML.hpp>
  +#include <XMLSupport/FormatterTreeWalker.hpp>
   
  -#include <util/XercesDefs.hpp>
  -#include <XSLT/XSLTInputSource.hpp>
   #include <XalanSourceTree/XalanSourceTreeDOMSupport.hpp>
   #include <XalanSourceTree/XalanSourceTreeParserLiaison.hpp>
   #include <XalanSourceTree/XalanSourceTreeDocument.hpp>
   
  -using namespace std;
  +#include <XalanTransformer/XalanCompiledStylesheetDefault.hpp>
  +#include <XalanTransformer/XalanTransformer.hpp>
   
  +using namespace std;
   
   
   /**
    * Utility call that extracts test file names from testsuite.  
    * @author Paul [EMAIL PROTECTED]
  - * @version $Id: FileUtility.hpp,v 1.7 2001/07/11 17:47:01 pauldick Exp $
  + * @version $Id: FileUtility.hpp,v 1.8 2001/07/13 20:48:34 pauldick Exp $
    */
   
   #if defined HARNESS_EXPORTS
  @@ -92,7 +105,7 @@
   #define HARNESS_API __declspec(dllimport)
   #endif
   
  -// Misc typedefs and const definitions
  +// Misc typedefs and Global variables.
   // These structures hold vectors of directory names and file names.
   #if defined(XALAN_NO_NAMESPACES)
        typedef vector<XalanDOMString>          FileNameVectorType;
  @@ -100,10 +113,11 @@
        typedef std::vector<XalanDOMString>     FileNameVectorType;
   #endif
   
  -     const XalanDOMString    processorType(XALAN_STATIC_UCODE_STRING("XalanC"));
  -     const XalanDOMString    XSLSuffix(XALAN_STATIC_UCODE_STRING(".xsl"));
  -     const XalanDOMString    XMLSuffix(XALAN_STATIC_UCODE_STRING(".xml"));
  -     const XalanDOMString    pathSep(XALAN_STATIC_UCODE_STRING("\\"));
  +// Basic Global variables used by many tests.
  +const XalanDOMString processorType(XALAN_STATIC_UCODE_STRING("XalanC"));
  +const XalanDOMString XSLSuffix(XALAN_STATIC_UCODE_STRING(".xsl"));
  +const XalanDOMString XMLSuffix(XALAN_STATIC_UCODE_STRING(".xml"));
  +const XalanDOMString pathSep(XALAN_STATIC_UCODE_STRING("\\"));
   
   // This class is exported from the Harness.dll
   class HARNESS_API FileUtility 
  @@ -165,6 +179,39 @@
        * @returns a XalanDOMString.
        */
        XalanDOMString FileUtility::getXercesVersion();
  +
  +     /**
  +     * Utility method used to compare the results. It inturn
  +     * call domCompare.  
  +     * @returns Void.
  +     */
  +     void
  +     FileUtility::compareResults(const XalanDOMString& theOutputFile, 
  +                                                             const 
XalanCompiledStylesheet* compiledSS, 
  +                                                             
XalanSourceTreeDocument* dom,
  +                                                             XalanDOMString 
fileName,
  +                                                             const XSLTInputSource& 
goldInputSource);
  +     /** 
  +     * Simplified version of above.
  +     */
  +     void
  +     FileUtility::compareSerializedResults(const XSLTInputSource& transformResult,
  +                                                             const XSLTInputSource& 
goldInputSource,
  +                                                             XalanDOMString 
fileName, const char* testCase);
  +     /**
  +     * Utility method used to create a FormatterToXML FormatterListener.
  +     * This is required to DOM comparisions. 
  +     * @returns a pointer to a FormatterListener.
  +     */
  +     FormatterListener* 
  +     FileUtility::getXMLFormatter(bool       shouldWriteXMLHeader,
  +                             bool                                    stripCData,
  +                             bool                                    escapeCData,
  +                             PrintWriter&                    resultWriter,
  +                             int                                             
indentAmount,
  +                             const XalanDOMString&   mimeEncoding,
  +                             const StylesheetRoot*   stylesheet);
  +
   
        /** 
        * Utility methods used to perform a DOM Compare
  
  
  
  1.10      +2 -2      xml-xalan/c/Tests/Harness/Harness.dsp
  
  Index: Harness.dsp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/Tests/Harness/Harness.dsp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Harness.dsp       2001/05/17 18:31:55     1.9
  +++ Harness.dsp       2001/07/13 20:48:34     1.10
  @@ -54,7 +54,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib 
/nologo /dll /machine:I386
  -# ADD LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\xerces-c_1.lib 
..\..\Build\Win32\VC6\Release\PlatformSupport.lib 
..\..\Build\Win32\VC6\Release\XalanDOM.lib /nologo /dll /pdb:none /machine:I386
  +# ADD LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\xerces-c_1.lib 
..\..\Build\Win32\VC6\Release\PlatformSupport.lib 
..\..\Build\Win32\VC6\Release\XalanDOM.lib 
..\..\Build\Win32\VC6\Release\XMLSupport.lib ..\..\Build\Win32\VC6\Release\XSLT.lib 
..\..\Build\Win32\VC6\Release\XalanSourceTree.lib 
..\..\Build\Win32\VC6\Release\DOMSupport.lib /nologo /dll /pdb:none /machine:I386
   # SUBTRACT LINK32 /debug
   
   !ELSEIF  "$(CFG)" == "Harness - Win32 Debug"
  @@ -81,7 +81,7 @@
   # ADD BSC32 /nologo
   LINK32=link.exe
   # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib 
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib 
/nologo /dll /debug /machine:I386 /pdbtype:sept
  -# ADD LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug\xerces-c_1D.lib 
..\..\Build\Win32\VC6\Debug\PlatformSupportD.lib 
..\..\Build\Win32\VC6\Debug\XalanDOMD.lib /nologo /dll /debug /machine:I386 
/pdbtype:sept
  +# ADD LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug\xerces-c_1D.lib 
..\..\Build\Win32\VC6\Debug\PlatformSupportD.lib 
..\..\Build\Win32\VC6\Debug\XalanDOMD.lib  ..\..\Build\Win32\VC6\Debug\XMLSupportD.lib 
..\..\Build\Win32\VC6\Debug\XalanSourceTreeD.lib  
..\..\Build\Win32\VC6\Debug\XSLTD.lib  ..\..\Build\Win32\VC6\Debug\DOMSupportD.lib 
/nologo /dll /debug /machine:I386 /pdbtype:sept
   # SUBTRACT LINK32 /incremental:no
   
   !ELSEIF  "$(CFG)" == "Harness - Win32 Release with symbols"
  
  
  
  1.2       +6 -3      xml-xalan/c/Tests/Harness/HarnessInit.hpp
  
  Index: HarnessInit.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/Tests/Harness/HarnessInit.hpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- HarnessInit.hpp   2001/05/15 16:12:39     1.1
  +++ HarnessInit.hpp   2001/07/13 20:48:35     1.2
  @@ -64,17 +64,20 @@
   #include<stdio.h>
   #include <time.h>
   
  +// Base header file.  Must be first... 
  +// Not sure what this is refering to, but it was in front of the 
PlatformDefinitions include??
  +// XERCES HEADERS...
  +#include <Include/PlatformDefinitions.hpp>
  +#include <util/XercesDefs.hpp>
   #include <util/PlatformUtils.hpp>
  -#include <FileUtility.hpp>
   
   using namespace std;
   
   
  -
   /**
    * Utility call that extracts test file names from testsuite.  
    * @author Paul [EMAIL PROTECTED]
  - * @version $Id: HarnessInit.hpp,v 1.1 2001/05/15 16:12:39 pauldick Exp $
  + * @version $Id: HarnessInit.hpp,v 1.2 2001/07/13 20:48:35 pauldick Exp $
    */
   // This is all commented out because these are inline methods, there is no
   // .cpp file associated.
  
  
  

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

Reply via email to