Changeset 59:33ec346d0903 in rrlib_xml


Ignore:
Timestamp:
19.04.2014 04:16:35 (5 years ago)
Author:
Tobias Föhst <foehst@…>
Branch:
default
Phase:
public
Message:

Updated make.xml and converted "test program" into unit test

Files:
1 deleted
1 edited
1 moved

Legend:

Unmodified
Added
Removed
  • make.xml

    r56 r59  
    33<targets> 
    44 
    5   <rrlib libs="xml2"> 
     5  <library libs="libxml-2.0"> 
    66    <sources> 
    77      tCleanupHandler.h 
     
    99      *.cpp 
    1010    </sources> 
    11   </rrlib> 
     11  </library> 
    1212   
    13   <testprogram name="program"> 
     13  <program> 
    1414    <sources> 
    15       test/*.cpp 
     15      tests/test.cpp 
    1616    </sources> 
    17   </testprogram> 
     17  </program> 
    1818 
    1919</targets> 
  • tests/test.cpp

    r57 r59  
    2020// 
    2121//---------------------------------------------------------------------- 
    22 /*!\file    rrlib/xml/test/test.cpp 
     22/*!\file    rrlib/xml/tests/test.cpp 
    2323 * 
    24  * \author  Tobias Foehst 
     24 * \author  Tobias Föhst 
    2525 * 
    2626 * \date    2010-08-26 
     
    3333//---------------------------------------------------------------------- 
    3434#include <cstdlib> 
    35 #include <iostream> 
     35#include <unistd.h> 
     36 
     37#include "rrlib/xml/tDocument.h" 
    3638 
    3739//---------------------------------------------------------------------- 
    3840// Internal includes with "" 
    3941//---------------------------------------------------------------------- 
    40 #include "rrlib/xml/tDocument.h" 
     42#include "rrlib/util/tUnitTestSuite.h" 
    4143 
    4244//---------------------------------------------------------------------- 
     
    4850// Namespace usage 
    4951//---------------------------------------------------------------------- 
    50 using namespace rrlib::xml; 
     52 
     53//---------------------------------------------------------------------- 
     54// Namespace declaration 
     55//---------------------------------------------------------------------- 
     56namespace rrlib 
     57{ 
     58namespace xml 
     59{ 
    5160 
    5261//---------------------------------------------------------------------- 
     
    6170// Implementation 
    6271//---------------------------------------------------------------------- 
     72class tTest : public util::tUnitTestSuite 
     73{ 
     74  RRLIB_UNIT_TESTS_BEGIN_SUITE(tTest); 
     75  RRLIB_UNIT_TESTS_ADD_TEST(CreateDocument); 
     76  RRLIB_UNIT_TESTS_ADD_TEST(AccessAttributes); 
     77  RRLIB_UNIT_TESTS_ADD_TEST(Children); 
     78  RRLIB_UNIT_TESTS_ADD_TEST(WriteReadFile); 
     79  RRLIB_UNIT_TESTS_ADD_TEST(Exceptions); 
     80  RRLIB_UNIT_TESTS_ADD_TEST(Content); 
     81  RRLIB_UNIT_TESTS_END_SUITE; 
    6382 
    64 int main(int argc, char **argv) 
    65 { 
    66   tDocument document1; 
    67   tNode &root_node = document1.AddRootNode("test"); 
    68   root_node.SetAttribute("prop_1", "val"); 
    69   root_node.SetAttribute("prop_2", true); 
    70   root_node.SetAttribute("prop_3", 4.3); 
    71   root_node.SetAttribute("prop_4", 123); 
    72   tNode &node1 = root_node.AddChildNode("test1"); 
    73   node1.SetAttribute("prop_1", "val_1"); 
    74   node1.SetAttribute("prop_2", true); 
    75   node1.SetAttribute("prop_3", 4.3); 
    76   node1.SetAttribute("prop_4", 123); 
    77 //  node1.SetTextContent("blubb"); 
    78 //  std::cout << "Content = " << node1.GetTextContent() << std::endl; 
    79 //  node1.SetTextContent("fn0rd&<bla"); 
    80 //  std::cout << "Content = " << node1.GetTextContent() << std::endl; 
    81 // 
    82   node1.RemoveAttribute("prop_4"); 
    83 ////  node1.RemoveTextContent(); 
     83private: 
    8484 
    85   tNode &node2 = node1.AddChildNode("test2"); 
    86   node2.SetAttribute("prop_1", "val_2"); 
    87   node2.SetAttribute("prop_2", true); 
    88   node2.SetAttribute("prop_3", 4.3); 
    89   node2.SetAttribute("prop_4", 123); 
     85  tDocument document; 
    9086 
    91 //  node2.AddNextSibling(node1); 
     87  virtual void InitializeTests() 
     88  { 
     89    tNode &root_node = document.AddRootNode("test"); 
     90    root_node.SetAttribute("prop_1", "val"); 
     91    root_node.SetAttribute("prop_2", true); 
     92    root_node.SetAttribute("prop_3", 4.3); 
     93    root_node.SetAttribute("prop_4", 123); 
     94    tNode &node1 = root_node.AddChildNode("test1"); 
     95    node1.SetAttribute("prop_1", "val_1"); 
     96    node1.SetAttribute("prop_2", true); 
     97    node1.SetAttribute("prop_3", 4.3); 
     98    node1.SetAttribute("prop_4", 123); 
    9299 
    93   node1.RemoveChildNode(node2); 
     100    node1.RemoveAttribute("prop_4"); 
    94101 
    95   std::cout << "Accessing node with content: " << document1.RootNode().GetXMLDump() << std::endl; 
     102    tNode &node2 = node1.AddChildNode("test2"); 
     103    node2.SetAttribute("prop_1", "val_2"); 
     104    node2.SetAttribute("prop_2", true); 
     105    node2.SetAttribute("prop_3", 4.3); 
     106    node2.SetAttribute("prop_4", 123); 
    96107 
    97   std::cout << document1.RootNode().Name() << std::endl; 
    98   std::cout << document1.RootNode().GetStringAttribute("prop_1") << std::endl; 
    99   std::cout << document1.RootNode().GetBoolAttribute("prop_2") << std::endl; 
    100   std::cout << document1.RootNode().GetDoubleAttribute("prop_3") << std::endl; 
    101   std::cout << document1.RootNode().GetIntAttribute("prop_4") << std::endl; 
    102  
    103   for (tNode::iterator it = document1.RootNode().ChildrenBegin(); it != document1.RootNode().ChildrenEnd(); ++it) 
    104   { 
    105     std::cout << "Accessing node with content: " << it->GetXMLDump() << std::endl; 
    106  
    107     std::cout << it->Name() << std::endl; 
    108     std::cout << it->GetStringAttribute("prop_1") << std::endl; 
    109     std::cout << it->GetBoolAttribute("prop_2") << std::endl; 
    110     std::cout << it->GetDoubleAttribute("prop_3") << std::endl; 
    111     if (it->HasAttribute("prop_4")) 
    112     { 
    113       std::cout << it->GetIntAttribute("prop_4") << std::endl; 
    114     } 
     108    node1.RemoveChildNode(node2); 
    115109  } 
    116110 
    117   document1.WriteToFile("test.xml"); 
     111  virtual void CleanUp() 
     112  {} 
    118113 
    119   tDocument document2(std::string("test.xml"), false); 
    120  
    121   std::cout << "doc 2" << std::endl; 
    122  
    123   std::cout << "Accessing node with content: " << document2.RootNode().GetXMLDump() 
    124             << " and " << document2.RootNode().GetNumberOfChildren() << " children." << std::endl; 
    125  
    126   std::cout << document2.RootNode().Name() << std::endl; 
    127   std::cout << document2.RootNode().GetStringAttribute("prop_1") << std::endl; 
    128   std::cout << document2.RootNode().GetBoolAttribute("prop_2") << std::endl; 
    129   std::cout << document2.RootNode().GetDoubleAttribute("prop_3") << std::endl; 
    130   std::cout << document2.RootNode().GetIntAttribute("prop_4") << std::endl; 
    131  
    132   document2.RootNode().FirstChild().AddNextSibling(document1.RootNode().FirstChild()); 
    133  
    134   std::cout << "Accessing node with content: " << document2.RootNode().GetXMLDump(true) << std::endl; 
    135  
    136   for (tNode::iterator it = document2.RootNode().ChildrenBegin(); it != document2.RootNode().ChildrenEnd(); ++it) 
     114  void CreateDocument() 
    137115  { 
    138     std::cout << "Accessing node with content: " << it->GetXMLDump() << std::endl; 
    139  
    140     std::cout << "name = " << it->Name() << std::endl; 
    141     std::cout << it->GetStringAttribute("prop_1") << std::endl; 
    142     std::cout << it->GetBoolAttribute("prop_2") << std::endl; 
    143     std::cout << it->GetDoubleAttribute("prop_3") << std::endl; 
    144     if (it->HasAttribute("prop_4")) 
    145     { 
    146       std::cout << it->GetIntAttribute("prop_4") << std::endl; 
    147     } 
     116    RRLIB_UNIT_TESTS_EQUALITY(std::string("<test prop_1=\"val\" prop_2=\"true\" prop_3=\"4.3\" prop_4=\"123\"><test1 prop_1=\"val_1\" prop_2=\"true\" prop_3=\"4.3\"/></test>"), this->document.RootNode().GetXMLDump()); 
    148117  } 
    149118 
    150   std::cout << "doc 1: " << document1.RootNode().GetXMLDump() << std::endl; 
    151   std::cout << "doc 2: " << document2.RootNode().GetXMLDump() << std::endl; 
    152  
     119  void AccessAttributes() 
    153120  { 
    154     tDocument document3; 
    155  
    156     document3.AddRootNode("foo"); 
    157  
    158     xmlNewChild(reinterpret_cast<xmlNode *>(&document3.RootNode()), 0, reinterpret_cast<const xmlChar *>("child1"), reinterpret_cast<const xmlChar *>("text1")); 
    159     xmlNewChild(reinterpret_cast<xmlNode *>(&document3.RootNode().FirstChild()), 0, reinterpret_cast<const xmlChar *>("child2"), reinterpret_cast<const xmlChar *>("text2")); 
    160  
    161     xmlNodeAddContent(reinterpret_cast<xmlNode *>(&document3.RootNode().FirstChild()), reinterpret_cast<const xmlChar *>("text3")); 
    162  
    163     std::cout << "doc 3: " << document3.RootNode().GetXMLDump() << std::endl; 
    164  
    165     std::cout << "content = " << document3.RootNode().FirstChild().GetTextContent() << std::endl; 
    166  
    167     document3.RootNode().FirstChild().RemoveTextContent(); 
    168  
    169     std::cout << "content = " << document3.RootNode().FirstChild().GetTextContent() << std::endl; 
    170  
    171     for (tNode::iterator it = document3.RootNode().FirstChild().ChildrenBegin(); it != document3.RootNode().FirstChild().ChildrenEnd(); ++it) 
    172     { 
    173       std::cout << "child: " << it->GetXMLDump() << std::endl; 
    174     } 
    175  
    176     document1.RootNode().AddChildNode(document3.RootNode().FirstChild()); 
     121    RRLIB_UNIT_TESTS_EQUALITY(std::string("test"), this->document.RootNode().Name()); 
     122    RRLIB_UNIT_TESTS_EQUALITY(std::string("val"), this->document.RootNode().GetStringAttribute("prop_1")); 
     123    RRLIB_UNIT_TESTS_EQUALITY(true, this->document.RootNode().GetBoolAttribute("prop_2")); 
     124    RRLIB_UNIT_TESTS_EQUALITY(4.3, this->document.RootNode().GetDoubleAttribute("prop_3")); 
     125    RRLIB_UNIT_TESTS_EQUALITY(123, this->document.RootNode().GetIntAttribute("prop_4")); 
    177126  } 
    178127 
     128  void Children() 
     129  { 
     130    RRLIB_UNIT_TESTS_EQUALITY(size_t(1), std::distance(this->document.RootNode().ChildrenBegin(), this->document.RootNode().ChildrenEnd())); 
     131  } 
    179132 
    180   std::cout << "doc 1: " << document1.RootNode().GetXMLDump() << std::endl 
    181             << " has " << document1.RootNode().GetNumberOfChildren() << " children." << std::endl; 
     133  void WriteReadFile() 
     134  { 
     135    char filename[] = "/tmp/tmp.XXXXXX"; 
     136    close(mkstemp(filename)); 
    182137 
    183   return EXIT_SUCCESS; 
     138    this->document.WriteToFile(filename); 
     139    tDocument read(std::string(filename), false); 
     140 
     141    remove(filename); 
     142 
     143    RRLIB_UNIT_TESTS_EQUALITY(this->document.RootNode().GetXMLDump(true), read.RootNode().GetXMLDump(true)); 
     144  } 
     145 
     146  void Exceptions() 
     147  { 
     148    RRLIB_UNIT_TESTS_EXCEPTION(this->document.RootNode().FirstChild().AddNextSibling(this->document.RootNode().FirstChild()), tException); 
     149    RRLIB_UNIT_TESTS_EXCEPTION(tDocument().RootNode().GetXMLDump(), tException); 
     150  } 
     151 
     152  void Content() 
     153  { 
     154    tDocument doc; 
     155 
     156    doc.AddRootNode("foo"); 
     157 
     158    xmlNewChild(reinterpret_cast<xmlNode *>(&doc.RootNode()), 0, reinterpret_cast<const xmlChar *>("child1"), reinterpret_cast<const xmlChar *>("text1")); 
     159    xmlNewChild(reinterpret_cast<xmlNode *>(&doc.RootNode().FirstChild()), 0, reinterpret_cast<const xmlChar *>("child2"), reinterpret_cast<const xmlChar *>("text2")); 
     160 
     161    xmlNodeAddContent(reinterpret_cast<xmlNode *>(&doc.RootNode().FirstChild()), reinterpret_cast<const xmlChar *>("text3")); 
     162 
     163    RRLIB_UNIT_TESTS_EQUALITY(std::string("<foo><child1>text1<child2>text2</child2>text3</child1></foo>"), doc.RootNode().GetXMLDump()); 
     164 
     165    RRLIB_UNIT_TESTS_EQUALITY(std::string("text1text2text3"), doc.RootNode().FirstChild().GetTextContent()); 
     166 
     167    doc.RootNode().FirstChild().RemoveTextContent(); 
     168 
     169    RRLIB_UNIT_TESTS_EQUALITY(std::string("text2"), doc.RootNode().FirstChild().GetTextContent()); 
     170 
     171    RRLIB_UNIT_TESTS_EQUALITY(std::string("<child2>text2</child2>"), doc.RootNode().FirstChild().ChildrenBegin()->GetXMLDump()); 
     172 
     173    this->document.RootNode().AddChildNode(doc.RootNode().FirstChild()); 
     174 
     175    RRLIB_UNIT_TESTS_EQUALITY(std::string("<test prop_1=\"val\" prop_2=\"true\" prop_3=\"4.3\" prop_4=\"123\"><test1 prop_1=\"val_1\" prop_2=\"true\" prop_3=\"4.3\"/><child1><child2>text2</child2></child1></test>"), this->document.RootNode().GetXMLDump()); 
     176  } 
     177}; 
     178 
     179//---------------------------------------------------------------------- 
     180// End of namespace declaration 
     181//---------------------------------------------------------------------- 
    184182} 
     183} 
     184 
     185RRLIB_UNIT_TESTS_REGISTER_SUITE(rrlib::xml::tTest); 
Note: See TracChangeset for help on using the changeset viewer.