#ifndef TEXT_NODE_TEST_HPP #define TEXT_NODE_TEST_HPP #include "../CppUnit/framework/TestCase.h" #include "../CppUnit/framework/TestSuite.h" #include "../CppUnit/framework/TestCaller.h" #include #include template class TextNodeTest : public TestCase { typedef string_adaptor SA; Arabica::DOM::DOMImplementation factory_; Arabica::DOM::Document document_; Arabica::DOM::Element root_; Arabica::DOM::Text text1_; Arabica::DOM::Text text2_; Arabica::DOM::Text text3_; Arabica::XPath::XPath parser_; typedef Arabica::XPath::XPathExpression XPathExpression_t; typedef Arabica::XPath::XPathValue XPathValue_t; typedef Arabica::DOM::Node Node_t; public: TextNodeTest(const std::string& name) : TestCase(name) { } // TextNodeTest void setUp() { factory_ = Arabica::SimpleDOM::DOMImplementation::getDOMImplementation(); document_ = factory_.createDocument(SA::construct_from_utf8(""), SA::construct_from_utf8("root"), 0); root_ = document_.getDocumentElement(); text1_ = document_.createTextNode(SA::construct_from_utf8("one")); text2_ = document_.createTextNode(SA::construct_from_utf8("two")); text3_ = document_.createTextNode(SA::construct_from_utf8("three")); root_.appendChild(text1_); root_.appendChild(text2_); root_.appendChild(text3_); } // setUp void extraSetUp() { root_.appendChild(document_.createElement(SA::construct_from_utf8("foo"))); root_.appendChild(document_.createTextNode(SA::construct_from_utf8("four"))); root_.appendChild(document_.createTextNode(SA::construct_from_utf8("five"))); root_.appendChild(document_.createElement(SA::construct_from_utf8("boo"))); root_.appendChild(document_.createTextNode(SA::construct_from_utf8("six"))); root_.appendChild(document_.createTextNode(SA::construct_from_utf8("seven"))); } // extraSetUp void test1() { Node_t node = parser_.evaluate(SA::construct_from_utf8("/root"), document_).asNodeSet()[0]; assertTrue(node == root_); } // test1 void testTextTest() { XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/root/text()"), document_); assertEquals(1, nodes.asNodeSet().size()); } // testTextTest void testTextTest2() { extraSetUp(); XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/root/text()"), document_); assertEquals(3, nodes.asNodeSet().size()); } // testTextTest2 void testTextValue() { string_type value = parser_.evaluate(SA::construct_from_utf8("/root/text()"), document_).asString(); assertTrue(SA::construct_from_utf8("onetwothree") == value); } // testTextValue void testTextValue2() { extraSetUp(); string_type value = parser_.evaluate(SA::construct_from_utf8("/root/text()"), document_).asString(); assertTrue(SA::construct_from_utf8("onetwothree") == value); } // testTextValue2 void testTextValue3() { string_type value = parser_.evaluate(SA::construct_from_utf8("/root/text()[1]"), document_).asString(); assertTrue(SA::construct_from_utf8("onetwothree") == value); } // testTextValue3 void testTextValue4() { extraSetUp(); string_type value = parser_.evaluate(SA::construct_from_utf8("/root/text()[2]"), document_).asString(); assertTrue(SA::construct_from_utf8("fourfive") == value); } // testTextValue4 void testTextValue5() { extraSetUp(); string_type value = parser_.evaluate(SA::construct_from_utf8("/root/text()[3]"), document_).asString(); assertTrue(SA::construct_from_utf8("sixseven") == value); } // testTextValue5 void test4() { string_type value = parser_.evaluate(SA::construct_from_utf8("/root/node()"), document_).asString(); assertTrue(SA::construct_from_utf8("onetwothree") == value); } // test4 void test5() { string_type value = parser_.evaluate(SA::construct_from_utf8("/root"), document_).asString(); assertTrue(SA::construct_from_utf8("onetwothree") == value); } // test5 void test5a() { extraSetUp(); string_type value = parser_.evaluate(SA::construct_from_utf8("/root"), document_).asString(); assertTrue(SA::construct_from_utf8("onetwothreefourfivesixseven") == value); } // test5a void testNodeTest() { XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/root/node()"), document_); assertEquals(1, nodes.asNodeSet().size()); } // testNodeTest void testDescendantOrSelf() { XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("//text()"), document_); assertEquals(1, nodes.asNodeSet().size()); } // testDescendantOrSelf void testDescendant() { XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/descendant::text()"), document_); assertEquals(1, nodes.asNodeSet().size()); } // testDescendant void testFollowingSibling1() { XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/root/text()/following-sibling::node()"), document_); assertEquals(0, nodes.asNodeSet().size()); } // testFollowingSibling1 void testFollowingSibling2() { extraSetUp(); XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/root/text()/following-sibling::node()"), document_); assertEquals(4, nodes.asNodeSet().size()); } // testFollowingSibling2 void testFollowingSibling3() { extraSetUp(); XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/root/text()/following-sibling::text()"), document_); assertEquals(2, nodes.asNodeSet().size()); } // testFollowingSibling3 void testFollowing1() { XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/root/text()/following::node()"), document_); assertEquals(0, nodes.asNodeSet().size()); } // testFollowing1 void testFollowing2() { extraSetUp(); XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/root/text()/following::node()"), document_); assertEquals(4, nodes.asNodeSet().size()); } // testFollowing2 void testFollowing3() { extraSetUp(); XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/root/text()/following::text()"), document_); assertEquals(2, nodes.asNodeSet().size()); } // testFollowing3 void testPreceding1() { extraSetUp(); XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/root/node()[last()]/preceding::node()"), document_); assertEquals(4, nodes.asNodeSet().size()); } // testPreceding1 void testPreceding2() { extraSetUp(); XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/root/node()[last()]/preceding::text()"), document_); assertEquals(2, nodes.asNodeSet().size()); } // testPreceding2 void testPreceding3() { extraSetUp(); XPathValue_t node = parser_.evaluate(SA::construct_from_utf8("/root/node()[last()]/preceding::text()[1]"), document_); assertTrue(SA::construct_from_utf8("fourfive") == node.asString()); } // testPreceding3 void testPreceding4() { extraSetUp(); XPathValue_t node = parser_.evaluate(SA::construct_from_utf8("/root/node()[last()]/preceding::text()[2]"), document_); assertTrue(SA::construct_from_utf8("onetwothree") == node.asString()); } // testPreceding4 void testPrecedingSibling1() { extraSetUp(); XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/root/node()[last()]/preceding-sibling::node()"), document_); assertEquals(4, nodes.asNodeSet().size()); } // testPrecedingSibling1 void testPrecedingSibling2() { extraSetUp(); XPathValue_t nodes = parser_.evaluate(SA::construct_from_utf8("/root/node()[last()]/preceding-sibling::text()"), document_); assertEquals(2, nodes.asNodeSet().size()); } // testPrecedingSibling2 void testPrecedingSibling3() { extraSetUp(); XPathValue_t node = parser_.evaluate(SA::construct_from_utf8("/root/node()[last()]/preceding-sibling::text()[1]"), document_); assertTrue(SA::construct_from_utf8("fourfive") == node.asString()); } // testPrecedingSibling3 void testPrecedingSibling4() { extraSetUp(); XPathValue_t node = parser_.evaluate(SA::construct_from_utf8("/root/node()[last()]/preceding-sibling::text()[2]"), document_); assertTrue(SA::construct_from_utf8("onetwothree") == node.asString()); } // testPrecedingSibling4 // PRECEDING // PRECEDING_SIBLING }; // class TextNodeTest template TestSuite* TextNodeTest_suite() { TestSuite* suiteOfTests = new TestSuite; suiteOfTests->addTest(new TestCaller >("test1", &TextNodeTest::test1)); suiteOfTests->addTest(new TestCaller >("testTextTest", &TextNodeTest::testTextTest)); suiteOfTests->addTest(new TestCaller >("testTextTest2", &TextNodeTest::testTextTest2)); suiteOfTests->addTest(new TestCaller >("testTextValue", &TextNodeTest::testTextValue)); suiteOfTests->addTest(new TestCaller >("testTextValue2", &TextNodeTest::testTextValue2)); suiteOfTests->addTest(new TestCaller >("testTextValue3", &TextNodeTest::testTextValue3)); suiteOfTests->addTest(new TestCaller >("testTextValue4", &TextNodeTest::testTextValue4)); suiteOfTests->addTest(new TestCaller >("testTextValue5", &TextNodeTest::testTextValue5)); suiteOfTests->addTest(new TestCaller >("test4", &TextNodeTest::test4)); suiteOfTests->addTest(new TestCaller >("test5", &TextNodeTest::test5)); suiteOfTests->addTest(new TestCaller >("test5a", &TextNodeTest::test5a)); suiteOfTests->addTest(new TestCaller >("testNodeTest", &TextNodeTest::testNodeTest)); suiteOfTests->addTest(new TestCaller >("testDescendantOrSelf", &TextNodeTest::testDescendantOrSelf)); suiteOfTests->addTest(new TestCaller >("testDescendant", &TextNodeTest::testDescendant)); suiteOfTests->addTest(new TestCaller >("testFollowingSibling1", &TextNodeTest::testFollowingSibling1)); suiteOfTests->addTest(new TestCaller >("testFollowingSibling2", &TextNodeTest::testFollowingSibling2)); suiteOfTests->addTest(new TestCaller >("testFollowingSibling3", &TextNodeTest::testFollowingSibling3)); suiteOfTests->addTest(new TestCaller >("testFollowing1", &TextNodeTest::testFollowing1)); suiteOfTests->addTest(new TestCaller >("testFollowing2", &TextNodeTest::testFollowing2)); suiteOfTests->addTest(new TestCaller >("testFollowing3", &TextNodeTest::testFollowing3)); suiteOfTests->addTest(new TestCaller >("testPreceding1", &TextNodeTest::testPreceding1)); suiteOfTests->addTest(new TestCaller >("testPreceding2", &TextNodeTest::testPreceding2)); suiteOfTests->addTest(new TestCaller >("testPreceding3", &TextNodeTest::testPreceding3)); suiteOfTests->addTest(new TestCaller >("testPreceding4", &TextNodeTest::testPreceding4)); suiteOfTests->addTest(new TestCaller >("testPrecedingSibling1", &TextNodeTest::testPrecedingSibling1)); suiteOfTests->addTest(new TestCaller >("testPrecedingSibling2", &TextNodeTest::testPrecedingSibling2)); suiteOfTests->addTest(new TestCaller >("testPrecedingSibling3", &TextNodeTest::testPrecedingSibling3)); suiteOfTests->addTest(new TestCaller >("testPrecedingSibling4", &TextNodeTest::testPrecedingSibling4)); return suiteOfTests; } // TextNodeTest #endif