Bläddra i källkod

Extended State class

- added "hasConnection" method to State class
- added tests for State class
Patrick-Laptop 3 år sedan
förälder
incheckning
b7e9f3bd6c
3 ändrade filer med 32 tillägg och 7 borttagningar
  1. 9 4
      source/logic/State.cpp
  2. 3 2
      source/logic/State.hpp
  3. 20 1
      test/cases/logic/StateTest.cpp

+ 9 - 4
source/logic/State.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-05
- * Changed:         2020-09-14
+ * Changed:         2020-09-15
  *
  * */
 
@@ -18,7 +18,7 @@ bool ls_std::State::addStateConnection(const StateConnectionId& _connectionId, c
   bool added {};
   std::shared_ptr<ls_std::StateConnection> connection {};
 
-  if(_connectedState != nullptr && !this->_stateIsConnected(_connectionId)) {
+  if(_connectedState != nullptr && !this->_hasConnection(_connectionId)) {
     connection = std::make_shared<ls_std::StateConnection>(_connectionId, _connectedState->getId());
     this->connectedStates.insert({_connectionId, connection});
     added = true;
@@ -37,12 +37,17 @@ ls_std::StateId ls_std::State::getId()
   return this->id;
 }
 
+bool ls_std::State::hasConnection(const StateConnectionId &_connectionId)
+{
+  return this->_hasConnection(_connectionId);
+}
+
 void ls_std::State::setId(StateId _id)
 {
   this->id = std::move(_id);
 }
 
-bool ls_std::State::_stateIsConnected(const std::string &_id)
+bool ls_std::State::_hasConnection(const StateConnectionId &_connectionId)
 {
-  return this->connectedStates.find(_id) != this->connectedStates.end();
+  return this->connectedStates.find(_connectionId) != this->connectedStates.end();
 }

+ 3 - 2
source/logic/State.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-05
- * Changed:         2020-09-14
+ * Changed:         2020-09-15
  *
  * */
 
@@ -26,6 +26,7 @@ namespace ls_std {
       bool addStateConnection(const StateConnectionId& _connectionId, const std::shared_ptr<State>& _connectedState);
       std::unordered_map<StateConnectionId, std::shared_ptr<StateConnection>> getConnectedStates();
       StateId getId();
+      bool hasConnection(const StateConnectionId& _connectionId);
       void setId(StateId _id);
 
     private:
@@ -33,7 +34,7 @@ namespace ls_std {
       std::unordered_map<StateConnectionId, std::shared_ptr<StateConnection>> connectedStates {};
       StateId id {};
 
-      bool _stateIsConnected(const StateId& _id);
+      bool _hasConnection(const StateConnectionId& _connectionId);
   };
 }
 

+ 20 - 1
test/cases/logic/StateTest.cpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-09-05
- * Changed:         2020-09-14
+ * Changed:         2020-09-15
  *
  * */
 
@@ -72,4 +72,23 @@ namespace {
     stateA.setId("B");
     ASSERT_STREQ("B", stateA.getId().c_str());
   }
+
+  TEST_F(StateTest, hasConnection)
+  {
+    ls_std::State stateA {"A"};
+    ls_std::State stateB {"B"};
+    ls_std::State stateC {"C"};
+
+    ASSERT_TRUE(stateA.addStateConnection("AB", std::make_shared<ls_std::State>(stateB)));
+    ASSERT_TRUE(stateA.hasConnection("AB"));
+    ASSERT_TRUE(stateA.addStateConnection("AC", std::make_shared<ls_std::State>(stateC)));
+    ASSERT_TRUE(stateA.hasConnection("AC"));
+  }
+
+  TEST_F(StateTest, hasConnectionNegative)
+  {
+    ls_std::State stateA {"A"};
+    ASSERT_FALSE(stateA.hasConnection("AB"));
+    ASSERT_FALSE(stateA.hasConnection("AC"));
+  }
 }