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]