TinyXMLTest.cpp 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * Author: Patrick-Christopher Mattulat
  3. * Company: Lynar Studios
  4. * E-Mail: webmaster@lynarstudios.com
  5. * Created: 2020-09-20
  6. * Changed: 2020-09-20
  7. *
  8. * */
  9. #include <gtest/gtest.h>
  10. #include <tinyxml2.h>
  11. #include "../../../../source/io/File.hpp"
  12. #include "../../../TestHelper.hpp"
  13. #include "../../../../source/io/FileReader.hpp"
  14. #include "../../../../source/boxing/String.hpp"
  15. namespace {
  16. class TinyXMLTest : public ::testing::Test {
  17. protected:
  18. TinyXMLTest() = default;
  19. ~TinyXMLTest() override = default;
  20. void SetUp() override {}
  21. void TearDown() override {}
  22. };
  23. TEST_F(TinyXMLTest, readDocument)
  24. {
  25. ls_std::File xmlFile {TestHelper::getResourcesFolderLocation() + "/state_machine_test.xml"};
  26. ls_std::FileReader reader {xmlFile};
  27. tinyxml2::XMLDocument document {};
  28. ls_std::String data {reader.read()};
  29. document.Parse(data.getByteData().data());
  30. tinyxml2::XMLNode* root = document.RootElement();
  31. ASSERT_TRUE(root != nullptr);
  32. ASSERT_STREQ("stateMachine", root->Value());
  33. ASSERT_TRUE(root->ToElement()->FindAttribute("name") != nullptr);
  34. ASSERT_STREQ("test_machine", root->ToElement()->FindAttribute("name")->Value());
  35. tinyxml2::XMLNode* statesNode = root->FirstChildElement("states");
  36. ASSERT_TRUE(statesNode != nullptr);
  37. tinyxml2::XMLNode* stateNode = statesNode->FirstChildElement("state");
  38. ASSERT_TRUE(stateNode != nullptr);
  39. int amount = 1;
  40. while(stateNode != nullptr) {
  41. stateNode = stateNode->NextSibling();
  42. if(stateNode != nullptr) {
  43. amount++;
  44. }
  45. }
  46. ASSERT_EQ(5, amount);
  47. }
  48. TEST_F(TinyXMLTest, readText)
  49. {
  50. tinyxml2::XMLDocument document {};
  51. ls_std::String data {R"(<connection connectionId="AB" condition="false" id="B"></connection>)"};
  52. document.Parse(data.getByteData().data());
  53. tinyxml2::XMLNode* root = document.RootElement();
  54. ASSERT_TRUE(root != nullptr);
  55. const tinyxml2::XMLAttribute *connectionIdAttribute = root->ToElement()->FindAttribute("connectionId");
  56. ASSERT_TRUE(connectionIdAttribute != nullptr);
  57. ASSERT_STREQ("connectionId", connectionIdAttribute->Name());
  58. ASSERT_STREQ("AB", connectionIdAttribute->Value());
  59. const tinyxml2::XMLAttribute *conditionAttribute = root->ToElement()->FindAttribute("condition");
  60. ASSERT_TRUE(conditionAttribute != nullptr);
  61. ASSERT_STREQ("condition", conditionAttribute->Name());
  62. ASSERT_STREQ("false", conditionAttribute->Value());
  63. const tinyxml2::XMLAttribute *idAttribute = root->ToElement()->FindAttribute("id");
  64. ASSERT_TRUE(idAttribute != nullptr);
  65. ASSERT_STREQ("id", idAttribute->Name());
  66. ASSERT_STREQ("B", idAttribute->Value());
  67. }
  68. }