dtest.cpp

来自「IBM的解析xml的工具Xerces的源代码」· C++ 代码 · 共 1,677 行 · 第 1/5 页

CPP
1,677
字号
    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;    }    //isID tests    XMLString::transcode("http://nsa", tempStr4, 3999);    XMLString::transcode("aa", tempStr5, 3999);    DOMAttr *idAtt = document->createAttributeNS(tempStr4, tempStr5);    testElementNode->setAttributeNode(idAtt);    if(idAtt->isId()) {        fprintf(stderr, "isID failed in line %i\n", __LINE__);        OK = false;    }    testElementNode->setIdAttributeNode(idAtt);    if(!idAtt->isId()) {        fprintf(stderr, "isID failed in line %i\n", __LINE__);        OK = false;    }    //clean up    testElementNode->removeAttributeNode(idAtt);    if (! OK)        printf("\n*****The DOMAttr* method calls listed above failed, all others worked correctly.*****\n");    return OK;};/** * This method tests DOMCDATASection* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */bool DOMTest::testCDATASection(DOMDocument* document){    DOMNode* node;    DOMNode* node2;    bool T = true;    bool OK = true;// For debugging*****   printf("\n          testCDATASection's outputs:\n");    XMLString::transcode("dBodyLevel23", tempStr, 3999);    node = document->getDocumentElement()->getElementsByTagName(tempStr)->item(0)->getFirstChild(); // node gets DOMCDATASection* node    node2 = node->cloneNode(T);//*****?    // Check nodes for equality, both their name and value or lack thereof    if (!(!XMLString::compareString(node->getNodeName(), node2->getNodeName()) &&        // Compares node names for equality          (node->getNodeValue() != 0 && node2->getNodeValue() != 0)     // Checks to make sure each node has a value node        ? !XMLString::compareString(node->getNodeValue(), node2->getNodeValue())         // If both have value nodes test those value nodes for equality        : (node->getNodeValue() == 0 && node2->getNodeValue() == 0)))   // If one node doesn't have a value node make sure both don't    {        fprintf(stderr, "'cloneNode' did not clone the DOMCDATASection* node correctly\n");        OK = false;    }    // Deep clone test comparison is in testNode & testDocument    // Test the user data    // Test simple set and get    DOMCDATASection* userTest = (DOMCDATASection*) node;    DOMCDATASection*  userFirst = (DOMCDATASection*) node2;    XMLCh* userSecond = tempStr2;    XMLString::transcode("first", tempStr, 3999);    XMLString::transcode("document", tempStr2, 3999);    userTest->setUserData(tempStr2, (void*) document, 0);    void* mydocument = userTest->getUserData(tempStr2);    if (document != mydocument) {        fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__);        OK = false;    }    userTest->setUserData(tempStr, (void*) userFirst, 0);    void* myFirst = userTest->getUserData(tempStr);    if (userFirst != myFirst) {        fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__);        OK = false;    }    // Test overwrite    void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0);    void* mySecond = userTest->getUserData(tempStr);    if (userSecond != mySecond) {        fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__);        OK = false;    }    if (userFirst != myFirst2) {        fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__);        OK = false;    }    if (userFirst == mySecond) {        fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__);        OK = false;    }    // Test null    // test non-exist key    XMLString::transcode("not-exist", tempStr3, 3999);    if (userTest->getUserData(tempStr3)) {        fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__);        OK = false;    }    // use a node that does not have user data set before    if (userFirst->getUserData(tempStr)) {        fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__);        OK = false;    }    // Test reset    void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0);    void* myNull = userTest->getUserData(tempStr);    if (userSecond != mySecond2) {        fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__);        OK = false;    }    if (myNull) {        fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__);        OK = false;    }    void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0);    void* myNull2 = userTest->getUserData(tempStr2);    if (mydocument != mydocument2) {        fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__);        OK = false;    }    if (myNull2) {        fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__);        OK = false;    }    //the userTest user data table should be null now    if (userTest->getUserData(tempStr)) {        fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__);        OK = false;    }    if (userTest->getUserData(tempStr2)) {        fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__);        OK = false;    }    // Test DOMUserDataHandler    // test clone    userTest->setUserData(tempStr2, (void*) document, &userhandler);    DOMNode* mycloned = userTest->cloneNode(true);    USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, d

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?