rangetest.cpp

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

CPP
966
字号
            TASSERT(!XMLString::compareString(range4->toString(),XMLUni::fgZeroLenString));            TASSERT(range4->getStartOffset()==0);            TASSERT(!XMLString::compareString(range4->getStartContainer()->getNodeName(),xhead2));            TASSERT(range4->getEndOffset()==0);            TASSERT(!XMLString::compareString(range4->getEndContainer()->getNodeName(),xh3));            //now insert a text node            //<head2>text6<h4/><h3/></head2>            DOMText* text6 = doc2->createTextNode(xtext6);            range4->insertNode(text6);            TASSERT(!XMLString::compareString(range4->toString(),xtext6));            TASSERT(range4->getStartOffset()==0);            TASSERT(!XMLString::compareString(range4->getStartContainer()->getNodeName(),xhead2));            TASSERT(range4->getEndOffset()==0);            TASSERT(!XMLString::compareString(range4->getEndContainer()->getNodeName(),xh3));            //***************************************************************            // quick test of updating            //***************************************************************            // <upbody>text1</upbody>            DOMElement* upbody = doc2->createElement(xupbody);            DOMText* uptext1 = doc2->createTextNode(xuptext1);            upbody->appendChild(uptext1);            root2->appendChild(upbody);            DOMRange* uprange = ((DOMDocumentRange*)doc2)->createRange();            uprange->setStart(upbody,0);            uprange->setEnd(upbody,1);            TASSERT(!XMLString::compareString(uprange->toString(),xuptext1));            TASSERT(uprange->getStartOffset()==0);            TASSERT(!XMLString::compareString(uprange->getStartContainer()->getNodeName(),xupbody));            TASSERT(uprange->getEndOffset()==1);            TASSERT(!XMLString::compareString(uprange->getEndContainer()->getNodeName(),xupbody));            // split text            uptext1->splitText(1);            TASSERT(!XMLString::compareString(uprange->toString(),xu));            TASSERT(uprange->getStartOffset()==0);            TASSERT(!XMLString::compareString(uprange->getStartContainer()->getNodeName(),xupbody));            TASSERT(uprange->getEndOffset()==1);            TASSERT(!XMLString::compareString(uprange->getEndContainer()->getNodeName(),xupbody));            //insert node            DOMElement* upbody2 = doc2->createElement(xupbody2);            DOMText* uptext2 = doc2->createTextNode(xuptext2);            upbody2->appendChild(uptext2);            root2->appendChild(upbody2);            DOMRange* uprange2 = ((DOMDocumentRange*)doc2)->createRange();            uprange2->setStart(uptext2,1);            uprange2->setEnd(upbody2,1);            DOMRange* uprange3 = doc2->createRange();            uprange3->setStart(uptext2,1);            uprange3->setEnd(upbody2,1);            TASSERT(!XMLString::compareString(uprange2->toString(),xptext2));            TASSERT(uprange2->getStartOffset()==1);            TASSERT(!XMLString::compareString(uprange2->getStartContainer()->getNodeValue(),xuptext2));            TASSERT(uprange2->getEndOffset()==1);            TASSERT(!XMLString::compareString(uprange2->getEndContainer()->getNodeName(),xupbody2));            TASSERT(!XMLString::compareString(uprange3->toString(),xptext2));            TASSERT(uprange3->getStartOffset()==1);            TASSERT(!XMLString::compareString(uprange3->getStartContainer()->getNodeValue(),xuptext2));            TASSERT(uprange3->getEndOffset()==1);            TASSERT(!XMLString::compareString(uprange3->getEndContainer()->getNodeName(),xupbody2));            DOMElement* upp1 = doc2->createElement(xupp1);            uprange2->insertNode(upp1);            TASSERT(!XMLString::compareString(uprange2->toString(),XMLUni::fgZeroLenString));            TASSERT(uprange2->getStartOffset()==1);            TASSERT(!XMLString::compareString(uprange2->getStartContainer()->getNodeValue(),xu));            TASSERT(uprange2->getEndOffset()==1);            TASSERT(!XMLString::compareString(uprange2->getEndContainer()->getNodeName(),xupbody2));            TASSERT(!XMLString::compareString(uprange3->toString(),XMLUni::fgZeroLenString));            TASSERT(uprange3->getStartOffset()==1);            TASSERT(!XMLString::compareString(uprange3->getStartContainer()->getNodeValue(),xu));            TASSERT(uprange3->getEndOffset()==1);            TASSERT(!XMLString::compareString(uprange3->getEndContainer()->getNodeName(),xupbody2));            //***************************************************************            //another set of test            //<foo><c/><moo><b/></moo>ab<a>Hello cd</a><cool>ef</cool></foo>            //            //  ______________________foo_____________________            //  |          |           |          |           |            //  c         moo        "ab"         a          cool            //             |                      |           |            //             b                    "Hello cd"   "ef"            //            DOMImplementation* impl3 = DOMImplementationRegistry::getDOMImplementation(tempStr);            DOMDocument* doc3 = impl3->createDocument();            DOMElement* root3 = doc3->createElement(xroot);            doc3->appendChild(root3);            DOMElement* foo = doc3->createElement(xfoo);            DOMElement* moo = doc3->createElement(xmoo);            DOMElement* cool = doc3->createElement(xcool);            DOMText* ab = doc3->createTextNode(xab);            DOMText* cd = doc3->createTextNode(xHellocd);            DOMText* ef = doc3->createTextNode(xef);            DOMElement* a = doc3->createElement(xa);            DOMElement* b = doc3->createElement(xb);            DOMElement* c = doc3->createElement(xc);            root3->appendChild(foo);            foo->appendChild(c);            foo->appendChild(moo);            foo->appendChild(ab);            foo->appendChild(a);            foo->appendChild(cool);            moo->appendChild(b);            a->appendChild(cd);            cool->appendChild(ef);            //***************************************************************            //TEST toString            //***************************************************************            DOMRange* newtestrange = ((DOMDocumentRange*)doc3)->createRange();            //case 1:            //start container is text node            //   i) end container is also text node            //    a) start==end            //    b) start!=end            //  ii) end container is not text node            //    a) start==end => impossible            //    b) start!=end            //            //case 2:            //start container is not text node            //   i) end container is text node            //    a) start==end => impossible            //    b) start!=end            //  ii) end container is not text node            //    a) start==end            //    b) start!=end            //case 1, i, a            newtestrange->setStart( cd, 1 );            newtestrange->setEnd( cd, 4 );            TASSERT(!XMLString::compareString(newtestrange->toString(),xell));            //case 1, i, b            newtestrange->setStart( cd, 1 );            newtestrange->setEnd( ef, 2 );            TASSERT(!XMLString::compareString(newtestrange->toString(),xellocdef));            //case 1, ii, b            newtestrange->setStart( cd, 1 );            newtestrange->setEnd( foo, 4 );            TASSERT(!XMLString::compareString(newtestrange->toString(),xellocd));            //case 2, i, b            newtestrange->setStart( foo, 1 );            newtestrange->setEnd( cd, 5 );            TASSERT(!XMLString::compareString(newtestrange->toString(),xabHello));            //case 2, ii, a            newtestrange->setStart( foo, 1 );            newtestrange->setEnd( foo, 4 );            TASSERT(!XMLString::compareString(newtestrange->toString(),xabHellocd));            //case 2, ii, b            newtestrange->setStart( moo, 1 );            newtestrange->setEnd( foo, 4 );            TASSERT(!XMLString::compareString(newtestrange->toString(),xabHellocd));            //***************************************************************            //test removeChild            //***************************************************************            DOMRange* newrange = doc3->createRange();            newrange->setStart( moo, 0 );            newrange->setEnd( foo, 4 );            TASSERT(newrange->getStartOffset()==0);            TASSERT(!XMLString::compareString(newrange->getStartContainer()->getNodeName(),xmoo));            TASSERT(newrange->getEndOffset()==4);            TASSERT(!XMLString::compareString(newrange->getEndContainer()->getNodeName(),xfoo));            TASSERT(!XMLString::compareString(newrange->toString(),xabHellocd));            DOMNode* n = newrange->cloneContents();            DOMNodeList* nol = foo->getChildNodes();            //removing moo            DOMNode* rem = foo->removeChild(nol->item(1));            rem->release();            TASSERT(newrange->getStartOffset()==1);            TASSERT(!XMLString::compareString(newrange->getStartContainer()->getNodeName(),xfoo));            TASSERT(newrange->getEndOffset()==3);            TASSERT(!XMLString::compareString(newrange->getEndContainer()->getNodeName(),xfoo));            TASSERT(!XMLString::compareString(newrange->toString(),xabHellocd));            TASSERT(newtestrange->getStartOffset()==1);            TASSERT(!XMLString::compareString(newtestrange->getStartContainer()->getNodeName(),xfoo));            TASSERT(newtestrange->getEndOffset()==3);            TASSERT(!XMLString::compareString(newtestrange->getEndContainer()->getNodeName(),xfoo));            TASSERT(!XMLString::compareString(newtestrange->toString(),xabHellocd));            // Now do some exception test            newrange->detach();            EXCEPTION_TEST(newrange->setStart( moo, 0 ), DOMException::INVALID_STATE_ERR);            EXCEPTION_TEST(newtestrange->setStartBefore(moo), DOMRangeException::INVALID_NODE_TYPE_ERR);            doc->release();            doc2->release();            doc3->release();        }    } //creating the dom tree and tests    // And call the termination method    XMLPlatformUtils::Terminate();    if (errorOccurred) {        printf("Test Failed\n");        return 4;    }    printf("Test Run Successfully\n");    return 0;};

⌨️ 快捷键说明

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