瀏覽代碼

Added TestDataFactory class

- added TestDataFactory class to provide test data on
global level
- adjusted tests for StateMachine class by replacing
test method with TestDataFactory call
Patrick-Laptop 3 年之前
父節點
當前提交
1c73425cc2
共有 4 個文件被更改,包括 80 次插入36 次删除
  1. 8 2
      CMakeLists.txt
  2. 40 0
      test/TestDataFactory.cpp
  3. 26 0
      test/TestDataFactory.hpp
  4. 6 34
      test/cases/logic/StateMachineTest.cpp

+ 8 - 2
CMakeLists.txt

@@ -102,7 +102,10 @@ set(SOURCE_FILES
         ${CMAKE_CURRENT_SOURCE_DIR}/source/serialization/json/logic/SerializableJSONStateConnection.hpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/serialization/json/logic/SerializableJSONStateConnection.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/serialization/json/logic/SerializableJSONState.hpp
-        ${CMAKE_CURRENT_SOURCE_DIR}/source/serialization/json/logic/SerializableJSONState.cpp)
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/serialization/json/logic/SerializableJSONState.cpp
+#        ${CMAKE_CURRENT_SOURCE_DIR}/source/serialization/json/logic/SerializableJSONStateMachine.hpp
+#        ${CMAKE_CURRENT_SOURCE_DIR}/source/serialization/json/logic/SerializableJSONStateMachine.cpp
+        )
 
 set(TEST_FILES
         ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/boxing/IntegerTest.cpp
@@ -133,7 +136,10 @@ set(TEST_FILES
         ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/logic/StateMachineTest.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/logic/StateConnectionTest.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/serialization/json/logic/SerializableJSONStateConnectionTest.cpp
-        ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/serialization/json/logic/SerializableJSONStateTest.cpp)
+        ${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)
 
 ##########################################################
 # Build

+ 40 - 0
test/TestDataFactory.cpp

@@ -0,0 +1,40 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2020-09-16
+ * Changed:         2020-09-16
+ *
+ * */
+
+#include "TestDataFactory.hpp"
+
+ls_std::StateMachine ls_std_test::TestDataFactory::createStateMachine()
+{
+  ls_std::StateMachine stateMachine {"test_machine"};
+
+  std::shared_ptr<ls_std::State> stateA = std::make_shared<ls_std::State>("A");
+  std::shared_ptr<ls_std::State> stateB = std::make_shared<ls_std::State>("B");
+  std::shared_ptr<ls_std::State> stateC = std::make_shared<ls_std::State>("C");
+  std::shared_ptr<ls_std::State> stateD = std::make_shared<ls_std::State>("D");
+  std::shared_ptr<ls_std::State> stateE = std::make_shared<ls_std::State>("E");
+
+  // add states
+
+  stateMachine.addState(stateA);
+  stateMachine.addState(stateB);
+  stateMachine.addState(stateC);
+  stateMachine.addState(stateD);
+  stateMachine.addState(stateE);
+
+  // add connections / see state_machine_test.png
+
+  stateA->addStateConnection("AB", stateB);
+  stateB->addStateConnection("BC", stateC);
+  stateB->addStateConnection("BD", stateD);
+  stateC->addStateConnection("CB", stateB);
+  stateC->addStateConnection("CE", stateE);
+  stateD->addStateConnection("DE", stateE);
+
+  return stateMachine;
+}

+ 26 - 0
test/TestDataFactory.hpp

@@ -0,0 +1,26 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2020-09-16
+ * Changed:         2020-09-16
+ *
+ * */
+
+#ifndef LS_STD_TEST_DATA_FACTORY_HPP
+#define LS_STD_TEST_DATA_FACTORY_HPP
+
+#include "../source/logic/StateMachine.hpp"
+
+namespace ls_std_test {
+  class TestDataFactory {
+    public:
+
+      TestDataFactory() = default;
+      ~TestDataFactory() = default;
+
+      static ls_std::StateMachine createStateMachine();
+  };
+}
+
+#endif

+ 6 - 34
test/cases/logic/StateMachineTest.cpp

@@ -9,6 +9,7 @@
 
 #include <gtest/gtest.h>
 #include "../../../source/logic/StateMachine.hpp"
+#include "../../TestDataFactory.hpp"
 
 namespace {
   class StateMachineTest : public ::testing::Test {
@@ -19,35 +20,6 @@ namespace {
 
       void SetUp() override {}
       void TearDown() override {}
-
-      static ls_std::StateMachine _createStateMachine() {
-        ls_std::StateMachine stateMachine {"test_machine"};
-
-        std::shared_ptr<ls_std::State> stateA = std::make_shared<ls_std::State>("A");
-        std::shared_ptr<ls_std::State> stateB = std::make_shared<ls_std::State>("B");
-        std::shared_ptr<ls_std::State> stateC = std::make_shared<ls_std::State>("C");
-        std::shared_ptr<ls_std::State> stateD = std::make_shared<ls_std::State>("D");
-        std::shared_ptr<ls_std::State> stateE = std::make_shared<ls_std::State>("E");
-
-        // add states
-
-        stateMachine.addState(stateA);
-        stateMachine.addState(stateB);
-        stateMachine.addState(stateC);
-        stateMachine.addState(stateD);
-        stateMachine.addState(stateE);
-
-        // add connections / see state_machine_test.png
-
-        stateA->addStateConnection("AB", stateB);
-        stateB->addStateConnection("BC", stateC);
-        stateB->addStateConnection("BD", stateD);
-        stateC->addStateConnection("CB", stateB);
-        stateC->addStateConnection("CE", stateE);
-        stateD->addStateConnection("DE", stateE);
-
-        return stateMachine;
-      }
   };
 
   TEST_F(StateMachineTest, addStateConnection)
@@ -73,7 +45,7 @@ namespace {
 
   TEST_F(StateMachineTest, getMemory)
   {
-    ls_std::StateMachine stateMachine = _createStateMachine();
+    ls_std::StateMachine stateMachine = ls_std_test::TestDataFactory::createStateMachine();
     ASSERT_STREQ("test_machine", stateMachine.getName().c_str());
     ASSERT_EQ(0, stateMachine.getMemory().size());
 
@@ -115,7 +87,7 @@ namespace {
 
   TEST_F(StateMachineTest, getStates)
   {
-    ls_std::StateMachine stateMachine = _createStateMachine();
+    ls_std::StateMachine stateMachine = ls_std_test::TestDataFactory::createStateMachine();
 
     ASSERT_TRUE(!stateMachine.getStates().empty());
     ASSERT_EQ(5, stateMachine.getStates().size());
@@ -123,7 +95,7 @@ namespace {
 
   TEST_F(StateMachineTest, hasState)
   {
-    ls_std::StateMachine stateMachine = _createStateMachine();
+    ls_std::StateMachine stateMachine = ls_std_test::TestDataFactory::createStateMachine();
 
     ASSERT_TRUE(stateMachine.hasState("A"));
     ASSERT_TRUE(stateMachine.hasState("B"));
@@ -134,13 +106,13 @@ namespace {
 
   TEST_F(StateMachineTest, hasStateNegative)
   {
-    ls_std::StateMachine stateMachine = _createStateMachine();
+    ls_std::StateMachine stateMachine = ls_std_test::TestDataFactory::createStateMachine();
     ASSERT_FALSE(stateMachine.hasState("F"));
   }
 
   TEST_F(StateMachineTest, proceed)
   {
-    ls_std::StateMachine stateMachine = _createStateMachine();
+    ls_std::StateMachine stateMachine = ls_std_test::TestDataFactory::createStateMachine();
     ASSERT_STREQ("test_machine", stateMachine.getName().c_str());
     ASSERT_TRUE(stateMachine.setStartState("A"));