/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #include #include #include using namespace odiapi::core; using namespace odiapi::props; using namespace writerfilter; using namespace std; class TestCore : public CppUnit::TestFixture { public: void testCreateCore() { PropertyPool::Pointer_t pool = createPropertyPool(); PropertyBag_Pointer_t pb = createPropertyBag(); pb->insert(createIntegerProperty(NS_fo::LN_font_weight, 12)); PropertyPoolHandle_Pointer_t ph = pool->insert(pb); Node::Pointer_t node = createNode(NS_style::LN_char, ph, "NS_style::LN_char"); CPPUNIT_ASSERT_MESSAGE("Create node failed wrong node id", node->getId() == NS_style::LN_char); CPPUNIT_ASSERT_MESSAGE("Create node failed wrong text", node->getText() == "NS_style::LN_char"); CPPUNIT_ASSERT_MESSAGE("Create node failed wrong pool handle", node->getProperties() == ph); } void testInsertSibling() { PropertyPool::Pointer_t pool = createPropertyPool(); PropertyBag_Pointer_t pb = createPropertyBag(); pb->insert(createIntegerProperty(NS_fo::LN_font_weight, 12)); PropertyPoolHandle_Pointer_t ph = pool->insert(pb); Node::Pointer_t node1 = createNode(NS_style::LN_char, ph, "Text"); Node::Pointer_t node2 = createNode(NS_style::LN_char, ph, "\\par"); node1->insertSibling(node2); string postfixSeq = node1->getText(); const Node* n = node1.get(); while (n->hasNext()) { n = &n->getNext(); postfixSeq = postfixSeq + n->getText(); } CPPUNIT_ASSERT_MESSAGE("Insert sibling failed", postfixSeq == "Text\\par"); Node::Pointer_t node3 = createNode(NS_style::LN_char, ph, "\\span"); node1->insertSibling(node3); postfixSeq = node1->getText(); n = node1.get(); while (n->hasNext()) { n = &n->getNext(); postfixSeq = postfixSeq + n->getText(); } CPPUNIT_ASSERT_MESSAGE("Insert sibling failed", postfixSeq == "Text\\span\\par"); } void testAppendChildren() { PropertyPool::Pointer_t pool = createPropertyPool(); PropertyBag_Pointer_t pb = createPropertyBag(); pb->insert(createIntegerProperty(NS_fo::LN_font_weight, 12)); PropertyPoolHandle_Pointer_t ph = pool->insert(pb); Node::Pointer_t node1 = createNode(NS_style::LN_char, ph, "Text"); const Node* pn1 = node1.get(); Node::Pointer_t node2 = createNode(NS_style::LN_char, ph, "\\par"); node2->appendChildren(node1); CPPUNIT_ASSERT_MESSAGE("Append children failed", &node2->getFirstChild() == pn1); const Node* n = &node2->getFirstChild(); string postfixSeq = n->getText() + n->getNext().getText(); CPPUNIT_ASSERT_MESSAGE("Append children failed", postfixSeq == "Text\\par"); } void testCore() { PropertyPool::Pointer_t pool = createPropertyPool(); PropertyBag_Pointer_t pb = createPropertyBag(); pb->insert(createIntegerProperty(NS_fo::LN_font_weight, 12)); PropertyPoolHandle_Pointer_t ph = pool->insert(pb); Node::Pointer_t node1 = createNode(NS_style::LN_char, ph, "A"); Node::Pointer_t node2 = createNode(NS_style::LN_char, ph, "\\span"); node2->appendChildren(node1); Node::Pointer_t node3 = createNode(NS_style::LN_char, ph, "B"); Node::Pointer_t node4 = createNode(NS_style::LN_char, ph, "\\span"); node4->appendChildren(node3); node2->insertSibling(node4); Node::Pointer_t node5 = createNode(NS_style::LN_char, ph, "\\par"); node5->appendChildren(node2); Node::Pointer_t node6 = createNode(NS_style::LN_char, ph, "C"); Node::Pointer_t node7 = createNode(NS_style::LN_char, ph, "\\span"); node7->appendChildren(node6); node5->appendChildren(node7); string postfixSeq = node5->getText(); const Node* n = node5.get(); while (n->hasPrevious()) { n = &n->getPrevious(); postfixSeq = postfixSeq + n->getText(); } CPPUNIT_ASSERT_MESSAGE("Insert sibling failed", postfixSeq == "\\par\\spanC\\spanB\\spanA"); } CPPUNIT_TEST_SUITE(TestCore); CPPUNIT_TEST(testCreateCore); CPPUNIT_TEST(testInsertSibling); CPPUNIT_TEST(testAppendChildren); CPPUNIT_TEST(testCore); CPPUNIT_TEST_SUITE_END(); }; //##################################### // register test suites CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(TestCore, "TestCore"); //NOADDITIONAL;