Explorar el Código

Improved StateConnection class

- replaced State references with StateId's
- replaced "primitive" types with state machine types
- adjusted tests of StateConnection class
pcmattulat hace 3 años
padre
commit
d20cd3f537

+ 5 - 7
source/logic/StateConnection.cpp

@@ -9,20 +9,18 @@
 
 #include "StateConnection.hpp"
 
-#include <utility>
-
-ls_std::StateConnection::StateConnection(std::string _connectionId, std::shared_ptr<State> _state) :
+ls_std::StateConnection::StateConnection(ls_std::StateConnectionId _connectionId, ls_std::StateId _stateId) :
 Class("StateConnection"),
 connectionId(std::move(_connectionId)),
-state(std::move(_state))
+stateId(std::move(_stateId))
 {}
 
-std::string ls_std::StateConnection::getConnectionId() {
+ls_std::StateConnectionId ls_std::StateConnection::getConnectionId() {
   return this->connectionId;
 }
 
-std::shared_ptr<ls_std::State> ls_std::StateConnection::getState() {
-  return this->state;
+ls_std::StateId ls_std::StateConnection::getState() {
+  return this->stateId;
 }
 
 bool ls_std::StateConnection::isPassable() {

+ 6 - 6
source/logic/StateConnection.hpp

@@ -13,25 +13,25 @@
 #include <memory>
 #include <atomic>
 #include "../base/Class.hpp"
-#include "State.hpp"
+#include "StateMachineTypes.hpp"
 
 namespace ls_std {
   class StateConnection : public Class {
     public:
 
-      explicit StateConnection(std::string _connectionId, std::shared_ptr<State> _state);
+      explicit StateConnection(StateConnectionId _connectionId, StateId _stateId);
       ~StateConnection() = default;
 
-      std::string getConnectionId();
-      std::shared_ptr<State> getState();
+      StateConnectionId getConnectionId();
+      StateId getState();
       bool isPassable();
       void updatePassCondition(bool _condition);
 
     private:
 
       std::atomic<bool> condition {};
-      std::string connectionId {};
-      std::shared_ptr<State> state {};
+      StateConnectionId connectionId {};
+      StateId stateId {};
   };
 }
 

+ 5 - 7
test/cases/logic/StateConnectionTest.cpp

@@ -23,27 +23,25 @@ namespace {
 
   TEST_F(StateConnectionTest, getConnectionId)
   {
-    ls_std::StateConnection connection {"AB", std::make_shared<ls_std::State>("B")};
+    ls_std::StateConnection connection {"AB", "B"};
     ASSERT_STREQ("AB", connection.getConnectionId().c_str());
   }
 
   TEST_F(StateConnectionTest, getState)
   {
-    ls_std::StateConnection connection {"AB", std::make_shared<ls_std::State>("B")};
-
-    ASSERT_TRUE(connection.getState() != nullptr);
-    ASSERT_STREQ("B", connection.getState()->getId().c_str());
+    ls_std::StateConnection connection {"AB", "B"};
+    ASSERT_STREQ("B", connection.getState().c_str());
   }
 
   TEST_F(StateConnectionTest, isPassable)
   {
-    ls_std::StateConnection connection {"AB", std::make_shared<ls_std::State>("B")};
+    ls_std::StateConnection connection {"AB", "B"};
     ASSERT_FALSE(connection.isPassable());
   }
 
   TEST_F(StateConnectionTest, updatePassCondition)
   {
-    ls_std::StateConnection connection {"AB", std::make_shared<ls_std::State>("B")};
+    ls_std::StateConnection connection {"AB", "B"};
 
     ASSERT_FALSE(connection.isPassable());
     connection.updatePassCondition(true);