Bläddra i källkod

Extended StateMachine class

- added "setMemory" method
- extended tests for StateMachine class
Patrick-Laptop 4 år sedan
förälder
incheckning
7eae6d9ab6

+ 5 - 0
source/logic/StateMachine.cpp

@@ -61,6 +61,11 @@ bool ls_std::StateMachine::proceed() {
   return condition;
 }
 
+void ls_std::StateMachine::setMemory(std::vector<ls_std::StateId> _memory)
+{
+  this->memory = std::move(_memory);
+}
+
 void ls_std::StateMachine::setName(std::string _name)
 {
   this->name = std::move(_name);

+ 1 - 0
source/logic/StateMachine.hpp

@@ -32,6 +32,7 @@ namespace ls_std {
       std::unordered_map<StateId, std::shared_ptr<State>> getStates();
       bool hasState(const StateId& _id);
       bool proceed();
+      void setMemory(std::vector<ls_std::StateId> _memory);
       void setName(std::string _name);
       bool setStartState(const StateId& _id);
 

+ 15 - 0
test/cases/logic/StateMachineTest.cpp

@@ -161,6 +161,21 @@ namespace {
     ASSERT_STREQ("E", stateMachine.getCurrentState()->getId().c_str());
   }
 
+  TEST_F(StateMachineTest, setMemory)
+  {
+    ls_std::StateMachine stateMachine {"test_machine"};
+    ASSERT_TRUE(stateMachine.getMemory().empty());
+
+    std::vector<ls_std::StateId> memory {"A", "B", "C"};
+    stateMachine.setMemory(memory);
+
+    ASSERT_FALSE(stateMachine.getMemory().empty());
+    ASSERT_EQ(3, stateMachine.getMemory().size());
+    ASSERT_STREQ("A", stateMachine.getMemory().at(0).c_str());
+    ASSERT_STREQ("B", stateMachine.getMemory().at(1).c_str());
+    ASSERT_STREQ("C", stateMachine.getMemory().at(2).c_str());
+  }
+
   TEST_F(StateMachineTest, setName)
   {
     ls_std::StateMachine stateMachine {"test_machine"};