XML.cpp 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #include "pch.h"
  2. #include "CppUnitTest.h"
  3. #include <XML.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("<xml attr attr2=\"\" attr3=\"true\"/>");
  13. Assert::IsTrue(element->getAttributeCount() == 3, L"One ore more xml attributes are missing");
  14. Assert::IsTrue(element->getName().istGleich("xml"), L"Der Element Name ist falsch");
  15. Assert::IsTrue(element->getChildCount() == 0, L"Das Element sollte keine Kinder haben");
  16. Assert::IsTrue(element->hasAttribute("attr"), L"Das Attribut attr fehlt");
  17. Assert::IsTrue(element->hasAttribute("attr2"), L"Das Attribut attr2 fehlt");
  18. Assert::IsTrue(element->hasAttribute("attr3"), L"Das Attribut attr3 fehlt");
  19. Assert::IsTrue(element->hasAttribute("") == 0, L"Es gibt ein falsches Attribut");
  20. Assert::IsTrue(element->getAttributeName(0).istGleich("attr"), L"Der Attribut name ist falsch");
  21. Assert::IsTrue(element->getAttributeName(1).istGleich("attr2"), L"Der Attribut name ist falsch");
  22. Assert::IsTrue(element->getAttributeName(2).istGleich("attr3"), L"Der Attribut name ist falsch");
  23. Assert::IsTrue(element->getAttributeValue("attr").istGleich(""), L"Der Wert des Attributes ist falsch");
  24. Assert::IsTrue(element->getAttributeValue("attr2").istGleich(""), L"Der Wert des Attributes ist falsch");
  25. Assert::IsTrue(element->getAttributeValue("attr3").istGleich("true"), L"Der Wert des Attributes ist falsch");
  26. element->release();
  27. }
  28. TEST_METHOD(ChildrenElementTest)
  29. {
  30. Framework::XML::Element* element = new Framework::XML::Element("<xml><a1/><a2/></xml>");
  31. Assert::IsTrue(element->getAttributeCount() == 0, L"Die Anzahl der Attribute stimmt nicht");
  32. Assert::IsTrue(element->getName().istGleich("xml"), L"Der Element Name ist falsch");
  33. Assert::IsTrue(element->getChildCount() == 2, L"Die Anzahl der Kinder ist falsch");
  34. Assert::IsTrue(element->zChild(0)->getAttributeCount() == 0, L"Die Anzahl der Attribute stimmt nicht");
  35. Assert::IsTrue(element->zChild(1)->getAttributeCount() == 0, L"Die Anzahl der Attribute stimmt nicht");
  36. Assert::IsTrue(element->zChild(0)->getName().istGleich("a1"), L"Der Element Name ist falsch");
  37. Assert::IsTrue(element->zChild(1)->getName().istGleich("a2"), L"Der Element Name ist falsch");
  38. element->release();
  39. }
  40. TEST_METHOD(WhitespaceTest)
  41. {
  42. Framework::XML::Element* element = new Framework::XML::Element("<xml \t \r\n \t > \r\n <a1 x y z=\"\"/> <a2/>\t</xml >");
  43. Assert::IsTrue(element->getAttributeCount() == 0, L"Die Anzahl der Attribute stimmt nicht");
  44. Assert::IsTrue(element->getName().istGleich("xml"), L"Der Element Name ist falsch");
  45. Assert::IsTrue(element->getChildCount() == 2, L"Die Anzahl der Kinder ist falsch");
  46. Assert::IsTrue(element->zChild(0)->getAttributeCount() == 3, L"Die Anzahl der Attribute stimmt nicht");
  47. Assert::IsTrue(element->zChild(1)->getAttributeCount() == 0, L"Die Anzahl der Attribute stimmt nicht");
  48. Assert::IsTrue(element->zChild(0)->getName().istGleich("a1"), L"Der Element Name ist falsch");
  49. Assert::IsTrue(element->zChild(1)->getName().istGleich("a2"), L"Der Element Name ist falsch");
  50. element->release();
  51. }
  52. };
  53. TEST_CLASS(XMLEditorTests)
  54. {
  55. public:
  56. TEST_METHOD(SetAttributeTest)
  57. {
  58. Framework::XML::Element* element = new Framework::XML::Element("<xml><a1 x y z=\"\"/><a2/></xml>");
  59. element->selectChildren().setAttribute("x", "true");
  60. Assert::IsTrue(element->getName().istGleich("xml"), L"Der Element Name ist falsch");
  61. Assert::IsTrue(element->getChildCount() == 2, L"Die Anzahl der Kinder ist falsch");
  62. Assert::IsTrue(element->zChild(0)->getAttributeCount() == 3, L"Die Anzahl der Attribute stimmt nicht");
  63. Assert::IsTrue(element->zChild(1)->getAttributeCount() == 1, L"Die Anzahl der Attribute stimmt nicht");
  64. Assert::IsTrue(element->zChild(0)->getName().istGleich("a1"), L"Der Element Name ist falsch");
  65. Assert::IsTrue(element->zChild(1)->getName().istGleich("a2"), L"Der Element Name ist falsch");
  66. Assert::IsTrue(element->zChild(0)->getAttributeValue("x").istGleich("true"), L"Der Attribut wert ist falsch");
  67. Assert::IsTrue(element->zChild(1)->getAttributeValue("x").istGleich("true"), L"Der Attribut wert ist falsch");
  68. element->release();
  69. }
  70. TEST_METHOD(RemoveAttributeTest)
  71. {
  72. Framework::XML::Element* element = new Framework::XML::Element("<xml><a1 x y z=\"\"/><a2/></xml>");
  73. element->selectChildren().removeAttribute("x");
  74. Assert::IsTrue(element->getName().istGleich("xml"), L"Der Element Name ist falsch");
  75. Assert::IsTrue(element->getChildCount() == 2, L"Die Anzahl der Kinder ist falsch");
  76. Assert::IsTrue(element->zChild(0)->getAttributeCount() == 2, L"Die Anzahl der Attribute stimmt nicht");
  77. Assert::IsTrue(element->zChild(1)->getAttributeCount() == 0, L"Die Anzahl der Attribute stimmt nicht");
  78. Assert::IsTrue(element->zChild(0)->getName().istGleich("a1"), L"Der Element Name ist falsch");
  79. Assert::IsTrue(element->zChild(1)->getName().istGleich("a2"), L"Der Element Name ist falsch");
  80. Assert::IsTrue(element->zChild(0)->hasAttribute("x") == 0, L"Ein entferntes Attibut ist noch vorhanden");
  81. Assert::IsTrue(element->zChild(1)->hasAttribute("x") == 0, L"Ein entferntes Attibut ist noch vorhanden");
  82. element->release();
  83. }
  84. TEST_METHOD(AddChildrenTest)
  85. {
  86. Framework::XML::Element* element = new Framework::XML::Element("<xml><a1 x y z=\"\"/><a2/></xml>");
  87. element->selectChildren().whereAttributeExists("x").addChild(element->dublicate());
  88. Assert::IsTrue(element->getName().istGleich("xml"), L"Der Element Name ist falsch");
  89. Assert::IsTrue(element->getChildCount() == 2, L"Die Anzahl der Kinder ist falsch");
  90. Assert::IsTrue(element->zChild(0)->getAttributeCount() == 3, L"Die Anzahl der Attribute stimmt nicht");
  91. Assert::IsTrue(element->zChild(1)->getAttributeCount() == 0, L"Die Anzahl der Attribute stimmt nicht");
  92. Assert::IsTrue(element->zChild(0)->getName().istGleich("a1"), L"Der Element Name ist falsch");
  93. Assert::IsTrue(element->zChild(1)->getName().istGleich("a2"), L"Der Element Name ist falsch");
  94. Assert::IsTrue(element->zChild(0)->getChildCount() == 1, L"Anzahl der Kinder ist Falsch");
  95. Assert::IsTrue(element->zChild(1)->getChildCount() == 0, L"Anzahl der Kinder ist Falsch");
  96. element->release();
  97. }
  98. TEST_METHOD(RemoveTest)
  99. {
  100. Framework::XML::Element* element = new Framework::XML::Element("<xml><a1 x y z=\"\"/><a2/></xml>");
  101. element->selectChildren().whereAttributeExists("x").remove();
  102. Assert::IsTrue(element->getName().istGleich("xml"), L"Der Element Name ist falsch");
  103. Assert::IsTrue(element->getChildCount() == 1, L"Die Anzahl der Kinder ist falsch");
  104. Assert::IsTrue(element->zChild(0)->getAttributeCount() == 0, L"Die Anzahl der Attribute stimmt nicht");
  105. element->release();
  106. }
  107. };
  108. }