You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by tn...@apache.org on 2002/07/04 17:35:15 UTC
cvs commit: xml-xerces/c/tests/DOM/DOMTest DTest.cpp
tng 2002/07/04 08:35:15
Modified: c/tests/DOM/DOMTest DTest.cpp
Log:
DOM L3: Test DOMDocument::renameNode
Revision Changes Path
1.24 +508 -49 xml-xerces/c/tests/DOM/DOMTest/DTest.cpp
Index: DTest.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/tests/DOM/DOMTest/DTest.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- DTest.cpp 27 Jun 2002 18:42:16 -0000 1.23
+++ DTest.cpp 4 Jul 2002 15:35:15 -0000 1.24
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.24 2002/07/04 15:35:15 tng
+ * DOM L3: Test DOMDocument::renameNode
+ *
* Revision 1.23 2002/06/27 18:42:16 tng
* DOM L3: Test DOMNode::isSameNode and DOMNode::isEqualNode
*
@@ -156,6 +159,8 @@
XMLCh tempStr[4000];
XMLCh tempStr2[4000];
XMLCh tempStr3[4000];
+XMLCh tempStr4[4000];
+XMLCh tempStr5[4000];
//DOMUserDataHandler
myUserDataHandler userhandler;
@@ -734,25 +739,25 @@
if (XMLString::compareString(tempStr, attributeNode->getName()))
{
- printf("Warning!!! DOMAttr's 'getName' method failed to work properly!\n");
+ fprintf(stderr, "Warning!!! DOMAttr's 'getName' method failed to work properly!\n");
OK = false;
}
XMLString::transcode("testAttribute's value", tempStr, 3999);
if (XMLString::compareString(tempStr, attributeNode->getNodeValue()))
{
- printf("Warning!!! DOMAttr's 'getNodeValue' method failed to work properly!\n");
+ fprintf(stderr, "Warning!!! DOMAttr's 'getNodeValue' method failed to work properly!\n");
OK = false;
}
if (! T ==attributeNode->getSpecified())
{
- printf("Warning!!! DOMAttr's 'getSpecified' method failed to work properly!\n");
+ fprintf(stderr, "Warning!!! DOMAttr's 'getSpecified' method failed to work properly!\n");
OK = false;
}
if (XMLString::compareString(tempStr, attributeNode->getValue()))
{
- printf("Warning!!! DOMAttr's 'getValue' method failed to work properly!\n");
+ fprintf(stderr, "Warning!!! DOMAttr's 'getValue' method failed to work properly!\n");
OK = false;
}
@@ -761,14 +766,14 @@
attributeNode->setNodeValue(tempStr); /// LEAK!!!!!
if (XMLString::compareString(tempStr, attributeNode->getNodeValue()))
{
- printf("Warning!!! DOMAttr's 'setNodeValue' method failed to work properly!\n");
+ fprintf(stderr, "Warning!!! DOMAttr's 'setNodeValue' method failed to work properly!\n");
OK = false;
}
attributeNode->setValue(XMLUni::fgZeroLenString);
if (XMLString::compareString(XMLUni::fgZeroLenString, attributeNode->getValue()))
{
- printf("Warning!!! DOMAttr's 'setValue' to '0' method failed to work properly!\n");
+ fprintf(stderr, "Warning!!! DOMAttr's 'setValue' to '0' method failed to work properly!\n");
OK = false;
}
@@ -776,7 +781,7 @@
attributeNode->setValue(tempStr);
if (XMLString::compareString(tempStr, attributeNode->getValue()))
{
- printf("Warning!!! DOMAttr's 'setValue' method failed to work properly!");
+ fprintf(stderr, "Warning!!! DOMAttr's 'setValue' method failed to work properly!");
OK = false;
}
@@ -952,6 +957,210 @@
OK = false;
}
+ // Test renameNode
+ XMLString::transcode("http://nsa", tempStr4, 3999);
+ XMLString::transcode("aa", tempStr5, 3999);
+ XMLString::transcode("pnsa:aa", tempStr3, 3999);
+
+ // create the attribute
+ DOMAttr* renameTestAttribute = document->createAttribute(tempStr5);
+ DOMAttr* renameTestAttributeNS = document->createAttributeNS(tempStr4, tempStr3);
+
+ // create the owner element and append the attribute node
+ DOMElement* renameTestElement = document->createElement(tempStr5);
+ renameTestElement->setAttributeNode(renameTestAttribute);
+ renameTestElement->setAttributeNode(renameTestAttributeNS);
+
+ // set up the userdata
+ renameTestAttribute->setUserData(tempStr5, (void*) document, &userhandler);
+ renameTestAttributeNS->setUserData(tempStr4, (void*) document, 0);
+
+ // set up the node value
+ renameTestAttribute->setNodeValue(tempStr5);
+ renameTestAttributeNS->setNodeValue(tempStr4);
+
+ XMLString::transcode("http://nsb", tempStr, 3999);
+ XMLString::transcode("bb", tempStr2, 3999);
+ XMLString::transcode("pnsb:bb", tempStr3, 3999);
+
+ // start the rename tests
+ // rename the NS Attribute
+ DOMAttr* renameTest = (DOMAttr*) document->renameNode(renameTestAttributeNS, tempStr, tempStr3);
+ // test the name
+ if (XMLString::compareString(tempStr, renameTest->getNamespaceURI()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (XMLString::compareString(tempStr2, renameTest->getLocalName()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (XMLString::compareString(tempStr3, renameTest->getNodeName()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the child / nodevalue
+ if (XMLString::compareString(tempStr4, renameTest->getNodeValue()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (XMLString::compareString(tempStr4, renameTest->getFirstChild()->getNodeValue()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the owner element
+ if (!renameTestElement->getAttributeNodeNS(tempStr, tempStr2)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTestElement->getAttributeNodeNS(tempStr4, tempStr5)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test user data
+ void* renamedocument = renameTest->getUserData(tempStr4);
+ if (document != renamedocument) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test isSame and isEqual
+ if (!renameTestAttributeNS->isEqualNode(renameTest)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (!renameTestAttributeNS->isSameNode(renameTest)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+
+
+ // rename the Attribute (null namespace)
+ renameTest = (DOMAttr*) document->renameNode(renameTestAttribute, 0, tempStr2);
+ // test the name
+ if (renameTest->getNamespaceURI())
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTest->getLocalName())
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (XMLString::compareString(tempStr2, renameTest->getNodeName()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the child / nodevalue
+ if (XMLString::compareString(tempStr5, renameTest->getNodeValue()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (XMLString::compareString(tempStr5, renameTest->getFirstChild()->getNodeValue()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the owner element
+ if (!renameTestElement->getAttributeNode(tempStr2)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTestElement->getAttributeNode(tempStr5)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test user data
+ renamedocument = renameTest->getUserData(tempStr5);
+ if (document != renamedocument) {
+ fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__);
+ OK = false;
+ }
+ // test isSame and isEqual
+ if (!renameTestAttribute->isEqualNode(renameTest)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (!renameTestAttribute->isSameNode(renameTest)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+
+
+ // rename the Attribute (with namespace)
+ renameTest = (DOMAttr*) document->renameNode(renameTestAttribute, tempStr, tempStr3);
+ // test the name
+ if (XMLString::compareString(tempStr, renameTest->getNamespaceURI()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (XMLString::compareString(tempStr2, renameTest->getLocalName()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (XMLString::compareString(tempStr3, renameTest->getNodeName()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the child / nodevalue
+ if (XMLString::compareString(tempStr5, renameTest->getNodeValue()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (XMLString::compareString(tempStr5, renameTest->getFirstChild()->getNodeValue()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTestAttribute->getFirstChild())
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the owner element
+ if (!renameTestElement->getAttributeNodeNS(tempStr, tempStr2)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTestElement->getAttributeNodeNS(0, tempStr2)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTestElement->getAttributeNode(tempStr2)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test user data
+ renamedocument = renameTest->getUserData(tempStr5);
+ if (document != renamedocument) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test userdatahandler
+ USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_RENAMED, tempStr5, document, renameTestAttribute, renameTest, __LINE__);
+ // test isSame and isEqual
+ // a new node is created here, so both isSame and isEqual are not compared
+ if (renameTestAttribute->isEqualNode(renameTest)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTestAttribute->isSameNode(renameTest)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+
+
if (! OK)
printf("\n*****The DOMAttr* method calls listed above failed, all others worked correctly.*****\n");
return OK;
@@ -1111,6 +1320,9 @@
OK = false;
}
+ // Test rename, should throw exception
+ EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 204 );
+
if (! OK)
printf("\n*****The DOMCDATASection* method calls listed above failed, all others worked correctly.*****\n");
return OK;
@@ -1137,7 +1349,7 @@
XMLString::transcode("dBodyLevel31'sChildTextNode11", tempStr, 3999);
if (XMLString::compareString(tempStr, charData->getData()))
{
- printf("Warning!!! DOMCharacterData's 'getData' failed to work properly!\n This may corrupt other DOMCharacterData tests!!!*****\n");
+ fprintf(stderr, "Warning!!! DOMCharacterData's 'getData' failed to work properly!\n This may corrupt other DOMCharacterData tests!!!*****\n");
OK = false;
}
@@ -1154,7 +1366,7 @@
if (XMLString::compareString(tempStr, charData->getData()))
{
- printf("Warning!!! DOMCharacterData's 'appendData' failed to work properly!\n");
+ fprintf(stderr, "Warning!!! DOMCharacterData's 'appendData' failed to work properly!\n");
OK = false;
}
// printf("This node's appended data is: " + charData->getData());
@@ -1163,7 +1375,7 @@
charData->deleteData(10, 100);
if (XMLString::compareString(tempStr, charData->getData()))
{
- printf("Warning!!! DOMCharacterData's 'deleteData' failed to work properly!\n");
+ fprintf(stderr, "Warning!!! DOMCharacterData's 'deleteData' failed to work properly!\n");
OK = false;
}
// printf("This node's partially deleted data is: " + charData->getData());
@@ -1171,7 +1383,7 @@
unsigned int length = 10;
if (!(length == charData->getLength()))
{
- printf("Warning!!! DOMCharacterData's 'getLength' failed to work properly!\n");
+ fprintf(stderr, "Warning!!! DOMCharacterData's 'getLength' failed to work properly!\n");
OK = false;
}
// printf("This node's data length is: " + charData->getLength());
@@ -1181,7 +1393,7 @@
charData->insertData(5, tempStr2);
if (XMLString::compareString(tempStr, charData->getData()))
{
- printf("Warning!!! DOMCharacterData's 'insertData' failed to work properly!\n");
+ fprintf(stderr, "Warning!!! DOMCharacterData's 'insertData' failed to work properly!\n");
OK = false;
}
// printf("This node's updated with insert data is: " + charData->getData());
@@ -1191,7 +1403,7 @@
charData->replaceData(15, 10, tempStr2);
if (XMLString::compareString(tempStr, charData->getData()))
{
- printf("Warning!!! DOMCharacterData's 'replaceData' failed to work properly!\n");
+ fprintf(stderr, "Warning!!! DOMCharacterData's 'replaceData' failed to work properly!\n");
OK = false;
}
// printf("This node's updated with replacement data is: " +charData->getData());
@@ -1200,7 +1412,7 @@
charData->setData(tempStr);
if (XMLString::compareString(tempStr, charData->getData()))
{
- printf("Warning!!! DOMCharacterData's 'setData' failed to work properly!");
+ fprintf(stderr, "Warning!!! DOMCharacterData's 'setData' failed to work properly!");
OK = false;
}
// printf("This node's new data via setData: " + charData->getData());
@@ -1208,7 +1420,7 @@
XMLString::transcode("123456789D123456789E123456789", tempStr, 3999);
if (XMLString::compareString(tempStr, charData->substringData(30, 30)))
{
- printf("Warning!!! DOMCharacterData's 'substringData' failed to work properly!\n");
+ fprintf(stderr, "Warning!!! DOMCharacterData's 'substringData' failed to work properly!\n");
OK = false;
}
// printf("Using subString 30,30 you get:"); charData->substringData(30,30)).print();
@@ -1216,7 +1428,7 @@
XMLString::transcode("New data A123456789B12345", tempStr, 3999);
if (XMLString::compareString(tempStr, charData->substringData(0, 25)))
{
- printf("Warning!!! DOMCharacterData's 'substringData' failed to work properly!\n");
+ fprintf(stderr, "Warning!!! DOMCharacterData's 'substringData' failed to work properly!\n");
OK = false;
}
// printf("Using subString 0,25 you get: "); charData->substringData(0,25)).print();
@@ -1368,6 +1580,9 @@
OK = false;
}
+ // Test rename, should throw exception
+ EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 205 );
+
if (!OK)
printf("\n*****The DOMCharacterData method calls listed above failed, all others worked correctly.*****\n");
charData->setData(resetData); // reset node to original data
@@ -1397,7 +1612,6 @@
if (XMLString::compareString(tempStr, node2->getNodeName()))
OK = false;
-
if (!OK)
printf("\n*****The ChildNodeList method calls listed above failed, all others worked correctly.*****\n");
return OK;
@@ -1552,6 +1766,9 @@
OK = false;
}
+ // Test rename, should throw exception
+ EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 206 );
+
if (!OK)
printf("\n*****The DOMComment* method calls listed above failed, all others worked correctly.*****\n");
return OK;
@@ -1633,13 +1850,13 @@
if (XMLString::compareString(checkDocType->getNodeName(),docType->getNodeName() ))
{
- printf("Warning!!! DOMDocument's 'getDocType method failed!\n" );
+ fprintf(stderr, "Warning!!! DOMDocument's 'getDocType method failed!\n" );
OK = false;
}
if (XMLString::compareString(checkDocType->getNodeValue(), docType->getNodeValue()))
{
- printf("Warning!!! DOMDocument's 'getDocType method failed!\n" );
+ fprintf(stderr, "Warning!!! DOMDocument's 'getDocType method failed!\n" );
OK = false;
}
@@ -1649,7 +1866,7 @@
? checkDocType->getNodeValue(), docType->getNodeValue()) // If both have value nodes test those value nodes for equality
: (checkDocType->getNodeValue() == 0 && docType->getNodeValue() == 0))) // If one node doesn't have a value node make sure both don't
{
- printf("Warning!!! DOMDocument's 'getDocType method failed!\n" );
+ fprintf(stderr, "Warning!!! DOMDocument's 'getDocType method failed!\n" );
OK = false;
}
*/
@@ -1662,7 +1879,7 @@
if (!(!XMLString::compareString(rootElement->getNodeName(), document->getDocumentElement()->getNodeName()) && // Compares node names for equality
check))
{
- printf("Warning!!! DOMDocument's 'getDocumentElement' method failed!\n" );
+ fprintf(stderr, "Warning!!! DOMDocument's 'getDocumentElement' method failed!\n" );
OK = false;
}
@@ -1676,7 +1893,7 @@
XMLString::transcode(elementNames[i], tempStr, 3999);
if (XMLString::compareString(tempStr, n->getNodeName()))
{
- printf("Comparison of this document's elements failed at element number %d at line %i \n", i, __LINE__);
+ fprintf(stderr, "Comparison of this document's elements failed at element number %d at line %i \n", i, __LINE__);
OK = false;
break;
}
@@ -1686,7 +1903,7 @@
//
//if (document->equals(document->getImplementation()))
//{
- // printf("Warning!!! DOMDocument's 'getImplementation' method failed!\n" );
+ // fprintf(stderr, "Warning!!! DOMDocument's 'getImplementation' method failed!\n" );
// OK = false;
//}
@@ -1708,7 +1925,7 @@
XMLString::transcode(newElementNames[i], tempStr, 3999);
if (XMLString::compareString(tempStr, n->getNodeName()))
{
- printf("Comparison of new document's elements failed at element number %d at line %i \n", i, __LINE__);
+ fprintf(stderr, "Comparison of new document's elements failed at element number %d at line %i \n", i, __LINE__);
OK = false;
break;
}
@@ -1727,7 +1944,7 @@
XMLString::transcode(elementNames[i], tempStr, 3999);
if (XMLString::compareString(tempStr, n->getNodeName()))
{
- printf("Comparison of restored document's elements failed at element number %d at line %i \n", i, __LINE__);
+ fprintf(stderr, "Comparison of restored document's elements failed at element number %d at line %i \n", i, __LINE__);
OK = false;
break;
}
@@ -1753,7 +1970,7 @@
result = treeCompare(node, node2); // Deep clone test comparison of document cloneNode
if (!result)
{
- printf("Warning!!! Deep clone of the document failed!\n");
+ fprintf(stderr, "Warning!!! Deep clone of the document failed!\n");
OK = false;
}
@@ -1880,6 +2097,9 @@
OK = false;
}
+ // Test rename, should throw exception
+ EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 207 );
+
if (!OK)
printf("\n*****The DOMDocument* method calls listed above failed, all others worked correctly.*****\n");
return OK;
@@ -1932,6 +2152,9 @@
OK = false;
}
+ // Test rename, should throw exception
+ EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 208 );
+
if (!OK)
printf("\n*****The DOMDocumentFragment* method calls listed above failed, all others worked correctly.*****\n");
return OK;
@@ -1974,7 +2197,7 @@
docNotationMap = docType->getNotations();
if (XMLString::compareString(tempStr, docNotationMap->item(0)->getNodeName()))
{
- printf("Warning!!! DOMDocumentType's 'getNotations' failed!\n");
+ fprintf(stderr, "Warning!!! DOMDocumentType's 'getNotations' failed!\n");
OK = false;
}
// doc->appendChild(newDocumentTypeImpl);//!! Throws a HIERARCHY_REQUEST_ERR *******
@@ -2107,6 +2330,9 @@
OK = false;
}
+ // Test rename, should throw exception
+ EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 209 );
+
if (!OK)
printf("\n*****The DOMDocumentType* method calls listed above failed, all others worked correctly.*****\n");
return OK;
@@ -2162,10 +2388,8 @@
}
-// For debugging***** printf("All DOMImplementation method calls worked correctly.\n");
if (!OK)
fprintf(stderr, "\n*****The DOMImplementation method calls listed above failed, all others worked correctly.*****\n");
-// printf("");
return OK;
};
@@ -2191,7 +2415,6 @@
DOMNamedNodeMap* nodeMap;
bool OK = true;
-// For debugging***** printf("\n testElement's outputs:\n");
node = document->getDocumentElement(); // node gets doc's firstElement
node2 = node->cloneNode(true);
// Check nodes for equality, both their name and value or lack thereof
@@ -2247,8 +2470,8 @@
XMLString::transcode(attributeCompare[k], tempStr, 3999);
if (XMLString::compareString(tempStr, n->getNodeName())))
{
- printf("Warning!!! Comparison of firstElement's attributes failed at line %i.\n", __LINE__);
- printf(" This failure can be a result of DOMElement's 'setValue' and/or 'setAttributeNode' and/or 'getAttributes' failing.\n");
+ fprintf(stderr, "Warning!!! Comparison of firstElement's attributes failed at line %i.\n", __LINE__);
+ fprintf(stderr, " This failure can be a result of DOMElement's 'setValue' and/or 'setAttributeNode' and/or 'getAttributes' failing.\n");
OK = false;
break;
}
@@ -2260,7 +2483,7 @@
int size = nodeMap->getLength();
if (size != 2)
{
- printf("DOMElement* Tests Failure 001\n");
+ fprintf(stderr, "DOMElement* Tests Failure 001\n");
OK = false;
};
DOMNode* rem = element->setAttributeNode(newAttributeNode);
@@ -2269,7 +2492,7 @@
size = nodeMap->getLength();
if (size != 3)
{
- printf("DOMElement* Tests Failure 002\n");
+ fprintf(stderr, "DOMElement* Tests Failure 002\n");
OK = false;
};
@@ -2280,7 +2503,7 @@
DOMAttr* fetchedAttr = (DOMAttr*) abc12;
if (fetchedAttr != newAttributeNode)
{
- printf("DOMElement* Tests Failure 003\n");
+ fprintf(stderr, "DOMElement* Tests Failure 003\n");
OK = false;
};
@@ -2289,7 +2512,7 @@
fetchedAttr = element->getAttributeNode(tempStr);
if (fetchedAttr != newAttributeNode)
{
- printf("DOMElement* Tests Failure 004\n");
+ fprintf(stderr, "DOMElement* Tests Failure 004\n");
OK = false;
};
@@ -2305,9 +2528,9 @@
XMLString::transcode(elementNames[i], tempStr, 3999);
if (XMLString::compareString(tempStr, n->getNodeName()))
{
- printf("Warning!!! Comparison of DOMElement's 'getElementsByTagName' "
+ fprintf(stderr, "Warning!!! Comparison of DOMElement's 'getElementsByTagName' "
"and/or 'item' failed at element number %d at line %i \n", i, __LINE__ );
- printf("\n");
+ fprintf(stderr, "\n");
OK = false;
break;
}
@@ -2334,7 +2557,7 @@
XMLString::transcode(textCompare[j], tempStr, 3999);
if (XMLString::compareString(tempStr, n->getNodeValue()))
{
- printf("Warning!!! Comparison of original text nodes via DOMNode* 'getChildNodes' & DOMNodeList 'item'\n"
+ fprintf(stderr, "Warning!!! Comparison of original text nodes via DOMNode* 'getChildNodes' & DOMNodeList 'item'\n"
" failed at text node: #%d at line %i \n ", j, __LINE__ );
OK = false;
break;
@@ -2350,7 +2573,7 @@
DOMNode* n = text2->item(0);
if (XMLString::compareString(tempStr, n->getNodeValue()))
{
- printf("Warning!!! Comparison of concatenated text nodes created by DOMElement's 'normalize' failed!\n");
+ fprintf(stderr, "Warning!!! Comparison of concatenated text nodes created by DOMElement's 'normalize' failed!\n");
OK = false;
}
@@ -2487,6 +2710,227 @@
OK = false;
}
+ // Test renameNode
+ XMLString::transcode("http://nsa", tempStr4, 3999);
+ XMLString::transcode("aa", tempStr5, 3999);
+ XMLString::transcode("pnsa:aa", tempStr3, 3999);
+
+ // create the element
+ DOMElement* renameTestElement = document->createElement(tempStr5);
+ DOMElement* renameTestElementNS = document->createElementNS(tempStr4, tempStr3);
+
+ // create the parent
+ DOMElement* renameTestParent = document->createElement(tempStr5);
+ renameTestParent->appendChild(renameTestElement);
+ renameTestParent->appendChild(renameTestElementNS);
+
+ // set up the userdata
+ renameTestElement->setUserData(tempStr5, (void*) document, &userhandler);
+ renameTestElementNS->setUserData(tempStr4, (void*) document, 0);
+
+ // append a text node as child
+ DOMText* renameTestText = document->createTextNode(tempStr5);
+ DOMText* renameTestTextNS = document->createTextNode(tempStr4);
+ renameTestElement->appendChild(renameTestText);
+ renameTestElementNS->appendChild(renameTestTextNS);
+
+ XMLString::transcode("http://nsb", tempStr, 3999);
+ XMLString::transcode("bb", tempStr2, 3999);
+ XMLString::transcode("pnsb:bb", tempStr3, 3999);
+
+ // set up some attributes
+ DOMAttr* renameTestAttribute = document->createAttribute(tempStr5);
+ DOMAttr* renameTestAttributeNS = document->createAttributeNS(tempStr4, tempStr3);
+ renameTestElement->setAttributeNode(renameTestAttribute);
+ renameTestElementNS->setAttributeNodeNS(renameTestAttributeNS);
+
+ // start the rename tests
+ // rename the NS Element
+ DOMElement* renameTest = (DOMElement*) document->renameNode(renameTestElementNS, tempStr, tempStr3);
+ // test the name
+ if (XMLString::compareString(tempStr, renameTest->getNamespaceURI()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (XMLString::compareString(tempStr2, renameTest->getLocalName()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (XMLString::compareString(tempStr3, renameTest->getNodeName()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the child / nodevalue
+ if (XMLString::compareString(tempStr4, renameTest->getFirstChild()->getNodeValue()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the attribute
+ if (!renameTest->getAttributeNodeNS(tempStr4, tempStr2))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the owner element
+ if (renameTestParent->getElementsByTagNameNS(tempStr, tempStr2)->getLength() != 1) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTestParent->getElementsByTagNameNS(tempStr4, tempStr5)->getLength() != 0) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test user data
+ void* renamedocument = renameTest->getUserData(tempStr4);
+ if (document != renamedocument) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test isSame and isEqual
+ if (!renameTestElementNS->isEqualNode(renameTest)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (!renameTestElementNS->isSameNode(renameTest)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+
+
+ // rename the Element (null namespace)
+ renameTest = (DOMElement*) document->renameNode(renameTestElement, 0, tempStr2);
+ // test the name
+ if (renameTest->getNamespaceURI())
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTest->getLocalName())
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (XMLString::compareString(tempStr2, renameTest->getNodeName()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the child / nodevalue
+ if (XMLString::compareString(tempStr5, renameTest->getFirstChild()->getNodeValue()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the attribute
+ if (!renameTest->getAttributeNode(tempStr5))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the owner element
+ if (renameTestParent->getElementsByTagName(tempStr2)->getLength() != 1) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTestParent->getElementsByTagName(tempStr5)->getLength() != 0) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test user data
+ renamedocument = renameTest->getUserData(tempStr5);
+ if (document != renamedocument) {
+ fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__);
+ OK = false;
+ }
+ // test isSame and isEqual
+ if (!renameTestElement->isEqualNode(renameTest)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (!renameTestElement->isSameNode(renameTest)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+
+
+ // rename the Element (with namespace)
+ renameTest = (DOMElement*) document->renameNode(renameTestElement, tempStr, tempStr3);
+ // test the name
+ if (XMLString::compareString(tempStr, renameTest->getNamespaceURI()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (XMLString::compareString(tempStr2, renameTest->getLocalName()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (XMLString::compareString(tempStr3, renameTest->getNodeName()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the child / nodevalue
+ if (XMLString::compareString(tempStr5, renameTest->getFirstChild()->getNodeValue()))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTestElement->getFirstChild())
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the attribute
+ if (!renameTest->getAttributeNode(tempStr5))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTestElement->getAttributeNode(tempStr5))
+ {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test the owner element
+ // the nodelist should be 2 items as we have to count the renameTestElementNS as well
+ if (renameTestParent->getElementsByTagNameNS(tempStr, tempStr2)->getLength() != 2) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTestParent->getElementsByTagNameNS(0, tempStr2)->getLength() != 0) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTestParent->getElementsByTagName(tempStr2)->getLength() != 0) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test user data
+ renamedocument = renameTest->getUserData(tempStr5);
+ if (document != renamedocument) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ // test userdatahandler
+ USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_RENAMED, tempStr5, document, renameTestElement, renameTest, __LINE__);
+ // test isSame and isEqual
+ // a new node is created here, so both isSame and isEqual are not compared
+ if (renameTestElement->isEqualNode(renameTest)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+ if (renameTestElement->isSameNode(renameTest)) {
+ fprintf(stderr, "renameNode failed in line %i\n", __LINE__);
+ OK = false;
+ }
+
+
if (!OK)
printf("\n*****The DOMElement* method calls listed above failed, all others worked correctly.*****\n");
return OK;
@@ -2642,6 +3086,9 @@
OK = false;
}
+ // Test rename, should throw exception
+ EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 210 );
+
if (!OK)
printf("\n*****The DOMEntity* method calls listed above failed, all others worked correctly.*****\n");
return OK;
@@ -2797,6 +3244,9 @@
OK = false;
}
+ // Test rename, should throw exception
+ EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 211 );
+
if (!OK)
printf("\n*****The DOMEntityReference* method calls listed above failed, all others worked correctly.*****\n");
return OK;
@@ -2828,7 +3278,7 @@
}
else
{
- printf("'cloneNode' did not successfully clone this whole node tree (deep)!\n");
+ fprintf(stderr, "'cloneNode' did not successfully clone this whole node tree (deep)!\n");
OK = false;
}
//!! The following gives a did not clone successfully message*********
@@ -2837,11 +3287,11 @@
result = treeCompare(node, node2);
if (!result)
{
- //printf("'cloneNode' did not successfully clone this whole node tree (deep)!\n");
+ //fprintf(stderr, "'cloneNode' did not successfully clone this whole node tree (deep)!\n");
}
else
{
- printf("'cloneNode' was supposed to fail here, either it or 'treeCompare' failed!!!\n");
+ fprintf(stderr, "'cloneNode' was supposed to fail here, either it or 'treeCompare' failed!!!\n");
OK = false;
}
// Deep clone test also in testDocument
@@ -3124,6 +3574,9 @@
OK = false;
}
+ // Test rename, should throw exception
+ EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 212 );
+
if (!OK)
printf("\n*****The DOMNotation* method calls listed above failed, all others worked correctly.*****\n");
return OK;
@@ -3151,7 +3604,7 @@
? !XMLString::compareString(pI->getNodeValue(), pI2->getNodeValue()) // If both have value nodes test those value nodes for equality
:(pI->getNodeValue() == 0 && pI2->getNodeValue() == 0)))// If one node doesn't have a value node make sure both don't
{
- printf("'cloneNode' did not clone the DOMEntity* node correctly\n");
+ fprintf(stderr, "'cloneNode' did not clone the DOMEntity* node correctly\n");
OK = false;
}
// Deep clone test comparison is in testNode & testDocument
@@ -3160,7 +3613,7 @@
XMLString::transcode("This is #document's processing instruction", tempStr, 3999);
if (XMLString::compareString(tempStr, pI->getData()))
{
- printf("Warning!!! PI's 'getData' failed!\n");
+ fprintf(stderr, "Warning!!! PI's 'getData' failed!\n");
OK = false;
}
@@ -3168,13 +3621,13 @@
pI->setData(tempStr);
if (XMLString::compareString(tempStr, pI->getData()))
{
- printf("Warning!!! PI's 'setData' failed!\n");
+ fprintf(stderr, "Warning!!! PI's 'setData' failed!\n");
OK = false;
}
XMLString::transcode("dTargetProcessorChannel", tempStr, 3999);
if (XMLString::compareString(tempStr, pI->getTarget()))
{
- printf("Warning!!! PI's 'getTarget' failed!\n");
+ fprintf(stderr, "Warning!!! PI's 'getTarget' failed!\n");
OK = false;
}
@@ -3304,6 +3757,9 @@
OK = false;
}
+ // Test rename, should throw exception
+ EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 213 );
+
if (!OK)
printf("\n*****The PI method calls listed above failed, all others worked correctly.*****\n");
@@ -3345,14 +3801,14 @@
XMLString::transcode("dBodyLevel31'sChildTextNo", tempStr, 3999);
if (XMLString::compareString(tempStr, text->getNodeValue()))
{
- printf("First part of DOMText's split text failed!\n" );
+ fprintf(stderr, "First part of DOMText's split text failed!\n" );
OK = false;
}
// Three original text nodes were concatenated by 'normalize' in testElement
XMLString::transcode("de11dBodyLevel31'sChildTextNode12dBodyLevel31'sChildTextNode13", tempStr, 3999);
if (XMLString::compareString(tempStr, text->getNextSibling()->getNodeValue()))
{
- printf("The second part of DOMText's split text failed!\n") ;
+ fprintf(stderr, "The second part of DOMText's split text failed!\n") ;
OK = false;
}
@@ -3486,6 +3942,9 @@
fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__);
OK = false;
}
+
+ // Test rename, should throw exception
+ EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 214 );
if (!OK)
printf("\n*****The DOMText* method calls listed above failed, all others worked correctly.*****\n");
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org