Ver código fonte

Added basic xml test

- added test for rapidxml to test library approach
Patrick 4 anos atrás
pai
commit
2742213784
2 arquivos alterados com 61 adições e 1 exclusões
  1. 2 1
      CMakeLists.txt
  2. 59 0
      test/cases/serialization/xml/XMLTest.cpp

+ 2 - 1
CMakeLists.txt

@@ -140,7 +140,8 @@ set(TEST_FILES
         ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/serialization/json/logic/SerializableJSONStateTest.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/serialization/json/logic/SerializableJSONStateMachineTest.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/test/TestDataFactory.hpp
-        ${CMAKE_CURRENT_SOURCE_DIR}/test/TestDataFactory.cpp)
+        ${CMAKE_CURRENT_SOURCE_DIR}/test/TestDataFactory.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/serialization/xml/XMLTest.cpp)
 
 ##########################################################
 # Build

+ 59 - 0
test/cases/serialization/xml/XMLTest.cpp

@@ -0,0 +1,59 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2020-09-19
+ * Changed:         2020-09-19
+ *
+ * */
+
+#include <gtest/gtest.h>
+#include <rapidxml.hpp>
+#include "../../../../source/io/File.hpp"
+#include "../../../TestHelper.hpp"
+#include "../../../../source/io/FileReader.hpp"
+
+namespace {
+  class XMLTest : public ::testing::Test {
+    protected:
+
+      XMLTest() = default;
+      ~XMLTest() override = default;
+
+      void SetUp() override {}
+      void TearDown() override {}
+  };
+
+  TEST_F(XMLTest, readDocument)
+  {
+    rapidxml::xml_document<> document {};
+
+    ls_std::File xmlFile {TestHelper::getResourcesFolderLocation() + "/state_machine_test.xml"};
+    ls_std::FileReader reader {xmlFile};
+    ls_std::byte_field data = reader.read();
+
+    std::vector<ls_std::byte> byteData(data.begin(), data.end());
+    byteData.push_back('\0');
+    document.parse<0>(byteData.data());
+
+    rapidxml::xml_node<>* parentNode = document.first_node("stateMachine");
+    ASSERT_TRUE(parentNode != nullptr);
+    ASSERT_STREQ("test_machine", parentNode->first_attribute("name")->value());
+
+    rapidxml::xml_node<>* stateNodes = parentNode->first_node("states");
+    ASSERT_TRUE(stateNodes != nullptr);
+
+    int amount = 1;
+    rapidxml::xml_node<>* stateNode = stateNodes->first_node("state");
+
+    while(stateNode != nullptr) {
+      stateNode = stateNode->next_sibling("state");
+
+      if(stateNode != nullptr) {
+        amount++;
+      }
+    }
+
+    ASSERT_EQ(5, amount);
+  }
+}