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]