XML.cpp 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. #include "pch.h"
  2. #include <XML.h>
  3. #include "CppUnitTest.h"
  4. using namespace Microsoft::VisualStudio::CppUnitTestFramework;
  5. namespace FrameworkTests
  6. {
  7. TEST_CLASS (XMLParserTests)
  8. {
  9. public:
  10. TEST_METHOD (EmptyElementTest)
  11. {
  12. Framework::XML::Element* element = new Framework::XML::Element(
  13. "<xml attr attr2=\"\" attr3=\"true\"/>");
  14. Assert::IsTrue(element->getAttributeCount() == 3,
  15. L"One ore more xml attributes are missing");
  16. Assert::IsTrue(element->getName().istGleich("xml"),
  17. L"Der Element Name ist falsch");
  18. Assert::IsTrue(element->getChildCount() == 0,
  19. L"Das Element sollte keine Kinder haben");
  20. Assert::IsTrue(
  21. element->hasAttribute("attr"), L"Das Attribut attr fehlt");
  22. Assert::IsTrue(
  23. element->hasAttribute("attr2"), L"Das Attribut attr2 fehlt");
  24. Assert::IsTrue(
  25. element->hasAttribute("attr3"), L"Das Attribut attr3 fehlt");
  26. Assert::IsTrue(element->hasAttribute("") == 0,
  27. L"Es gibt ein falsches Attribut");
  28. Assert::IsTrue(element->getAttributeName(0).istGleich("attr"),
  29. L"Der Attribut name ist falsch");
  30. Assert::IsTrue(element->getAttributeName(1).istGleich("attr2"),
  31. L"Der Attribut name ist falsch");
  32. Assert::IsTrue(element->getAttributeName(2).istGleich("attr3"),
  33. L"Der Attribut name ist falsch");
  34. Assert::IsTrue(element->getAttributeValue("attr").istGleich(""),
  35. L"Der Wert des Attributes ist falsch");
  36. Assert::IsTrue(element->getAttributeValue("attr2").istGleich(""),
  37. L"Der Wert des Attributes ist falsch");
  38. Assert::IsTrue(
  39. element->getAttributeValue("attr3").istGleich("true"),
  40. L"Der Wert des Attributes ist falsch");
  41. element->release();
  42. }
  43. TEST_METHOD (ChildrenElementTest)
  44. {
  45. Framework::XML::Element* element
  46. = new Framework::XML::Element("<xml><a1/><a2/></xml>");
  47. Assert::IsTrue(element->getAttributeCount() == 0,
  48. L"Die Anzahl der Attribute stimmt nicht");
  49. Assert::IsTrue(element->getName().istGleich("xml"),
  50. L"Der Element Name ist falsch");
  51. Assert::IsTrue(element->getChildCount() == 2,
  52. L"Die Anzahl der Kinder ist falsch");
  53. Assert::IsTrue(element->zChild(0)->getAttributeCount() == 0,
  54. L"Die Anzahl der Attribute stimmt nicht");
  55. Assert::IsTrue(element->zChild(1)->getAttributeCount() == 0,
  56. L"Die Anzahl der Attribute stimmt nicht");
  57. Assert::IsTrue(element->zChild(0)->getName().istGleich("a1"),
  58. L"Der Element Name ist falsch");
  59. Assert::IsTrue(element->zChild(1)->getName().istGleich("a2"),
  60. L"Der Element Name ist falsch");
  61. element->release();
  62. }
  63. TEST_METHOD (WhitespaceTest)
  64. {
  65. Framework::XML::Element* element = new Framework::XML::Element(
  66. "<xml \t \r\n \t > \r\n <a1 x y z=\"\"/> <a2/>\t</xml >");
  67. Assert::IsTrue(element->getAttributeCount() == 0,
  68. L"Die Anzahl der Attribute stimmt nicht");
  69. Assert::IsTrue(element->getName().istGleich("xml"),
  70. L"Der Element Name ist falsch");
  71. Assert::IsTrue(element->getChildCount() == 2,
  72. L"Die Anzahl der Kinder ist falsch");
  73. Assert::IsTrue(element->zChild(0)->getAttributeCount() == 3,
  74. L"Die Anzahl der Attribute stimmt nicht");
  75. Assert::IsTrue(element->zChild(1)->getAttributeCount() == 0,
  76. L"Die Anzahl der Attribute stimmt nicht");
  77. Assert::IsTrue(element->zChild(0)->getName().istGleich("a1"),
  78. L"Der Element Name ist falsch");
  79. Assert::IsTrue(element->zChild(1)->getName().istGleich("a2"),
  80. L"Der Element Name ist falsch");
  81. element->release();
  82. }
  83. };
  84. TEST_CLASS (XMLEditorTests)
  85. {
  86. public:
  87. TEST_METHOD (SetAttributeTest)
  88. {
  89. Framework::XML::Element* element = new Framework::XML::Element(
  90. "<xml><a1 x y z=\"\"/><a2/></xml>");
  91. element->selectChildren().setAttribute("x", "true");
  92. Assert::IsTrue(element->getName().istGleich("xml"),
  93. L"Der Element Name ist falsch");
  94. Assert::IsTrue(element->getChildCount() == 2,
  95. L"Die Anzahl der Kinder ist falsch");
  96. Assert::IsTrue(element->zChild(0)->getAttributeCount() == 3,
  97. L"Die Anzahl der Attribute stimmt nicht");
  98. Assert::IsTrue(element->zChild(1)->getAttributeCount() == 1,
  99. L"Die Anzahl der Attribute stimmt nicht");
  100. Assert::IsTrue(element->zChild(0)->getName().istGleich("a1"),
  101. L"Der Element Name ist falsch");
  102. Assert::IsTrue(element->zChild(1)->getName().istGleich("a2"),
  103. L"Der Element Name ist falsch");
  104. Assert::IsTrue(
  105. element->zChild(0)->getAttributeValue("x").istGleich("true"),
  106. L"Der Attribut wert ist falsch");
  107. Assert::IsTrue(
  108. element->zChild(1)->getAttributeValue("x").istGleich("true"),
  109. L"Der Attribut wert ist falsch");
  110. element->release();
  111. }
  112. TEST_METHOD (RemoveAttributeTest)
  113. {
  114. Framework::XML::Element* element = new Framework::XML::Element(
  115. "<xml><a1 x y z=\"\"/><a2/></xml>");
  116. element->selectChildren().removeAttribute("x");
  117. Assert::IsTrue(element->getName().istGleich("xml"),
  118. L"Der Element Name ist falsch");
  119. Assert::IsTrue(element->getChildCount() == 2,
  120. L"Die Anzahl der Kinder ist falsch");
  121. Assert::IsTrue(element->zChild(0)->getAttributeCount() == 2,
  122. L"Die Anzahl der Attribute stimmt nicht");
  123. Assert::IsTrue(element->zChild(1)->getAttributeCount() == 0,
  124. L"Die Anzahl der Attribute stimmt nicht");
  125. Assert::IsTrue(element->zChild(0)->getName().istGleich("a1"),
  126. L"Der Element Name ist falsch");
  127. Assert::IsTrue(element->zChild(1)->getName().istGleich("a2"),
  128. L"Der Element Name ist falsch");
  129. Assert::IsTrue(element->zChild(0)->hasAttribute("x") == 0,
  130. L"Ein entferntes Attibut ist noch vorhanden");
  131. Assert::IsTrue(element->zChild(1)->hasAttribute("x") == 0,
  132. L"Ein entferntes Attibut ist noch vorhanden");
  133. element->release();
  134. }
  135. TEST_METHOD (AddChildrenTest)
  136. {
  137. Framework::XML::Element* element = new Framework::XML::Element(
  138. "<xml><a1 x y z=\"\"/><a2/></xml>");
  139. element->selectChildren().whereAttributeExists("x").addChild(
  140. element->dublicate());
  141. Assert::IsTrue(element->getName().istGleich("xml"),
  142. L"Der Element Name ist falsch");
  143. Assert::IsTrue(element->getChildCount() == 2,
  144. L"Die Anzahl der Kinder ist falsch");
  145. Assert::IsTrue(element->zChild(0)->getAttributeCount() == 3,
  146. L"Die Anzahl der Attribute stimmt nicht");
  147. Assert::IsTrue(element->zChild(1)->getAttributeCount() == 0,
  148. L"Die Anzahl der Attribute stimmt nicht");
  149. Assert::IsTrue(element->zChild(0)->getName().istGleich("a1"),
  150. L"Der Element Name ist falsch");
  151. Assert::IsTrue(element->zChild(1)->getName().istGleich("a2"),
  152. L"Der Element Name ist falsch");
  153. Assert::IsTrue(element->zChild(0)->getChildCount() == 1,
  154. L"Anzahl der Kinder ist Falsch");
  155. Assert::IsTrue(element->zChild(1)->getChildCount() == 0,
  156. L"Anzahl der Kinder ist Falsch");
  157. element->release();
  158. }
  159. TEST_METHOD (RemoveTest)
  160. {
  161. Framework::XML::Element* element = new Framework::XML::Element(
  162. "<xml><a1 x y z=\"\"/><a2/></xml>");
  163. element->selectChildren().whereAttributeExists("x").remove();
  164. Assert::IsTrue(element->getName().istGleich("xml"),
  165. L"Der Element Name ist falsch");
  166. Assert::IsTrue(element->getChildCount() == 1,
  167. L"Die Anzahl der Kinder ist falsch");
  168. Assert::IsTrue(element->zChild(0)->getAttributeCount() == 0,
  169. L"Die Anzahl der Attribute stimmt nicht");
  170. element->release();
  171. }
  172. };
  173. } // namespace FrameworkTests