SerializableXMLStateTest.cpp 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * Author: Patrick-Christopher Mattulat
  3. * Company: Lynar Studios
  4. * E-Mail: webmaster@lynarstudios.com
  5. * Created: 2020-09-20
  6. * Changed: 2020-09-20
  7. *
  8. * *//*
  9. #include <gtest/gtest.h>
  10. #include "../../../../../source/serialization/xml/logic/SerializableXMLState.hpp"
  11. #include "../../../../../source/boxing/String.hpp"
  12. namespace {
  13. class SerializableXMLStateTest : public ::testing::Test {
  14. protected:
  15. SerializableXMLStateTest() = default;
  16. ~SerializableXMLStateTest() override = default;
  17. void SetUp() override {}
  18. void TearDown() override {}
  19. };
  20. // implementation
  21. TEST_F(SerializableXMLStateTest, marshal)
  22. {
  23. std::shared_ptr<ls_std::State> stateA = std::make_shared<ls_std::State>("A");
  24. stateA->addStateConnection(std::make_shared<ls_std::StateConnection>("AB", "B"));
  25. stateA->addStateConnection(std::make_shared<ls_std::StateConnection>("AC", "C"));
  26. ls_std::SerializableXMLState serializable {stateA};
  27. std::string data = serializable.marshal();
  28. ASSERT_TRUE(!data.empty());
  29. }
  30. TEST_F(SerializableXMLStateTest, unmarshal)
  31. {
  32. ls_std::SerializableXMLState serializable {std::make_shared<ls_std::State>("A")};
  33. std::string xmlText = R"(
  34. <state id="B">
  35. <connections>
  36. <connection connectionId="BC" id="C" condition="true"/>
  37. <connection connectionId="BD" id="D" condition="true"/>
  38. </connections>
  39. </state>)";
  40. serializable.unmarshal(xmlText);
  41. ASSERT_STREQ("B", serializable.getValue()->getId().c_str());
  42. auto connections = serializable.getValue()->getConnectedStates();
  43. ASSERT_EQ(2, connections.size());
  44. ASSERT_TRUE(connections.at("BC") != nullptr);
  45. ASSERT_TRUE(connections.at("BC")->isPassable());
  46. ASSERT_STREQ("BC", connections.at("BC")->getConnectionId().c_str());
  47. ASSERT_STREQ("C", connections.at("BC")->getStateId().c_str());
  48. ASSERT_TRUE(connections.at("BD") != nullptr);
  49. ASSERT_TRUE(connections.at("BD")->isPassable());
  50. ASSERT_STREQ("BD", connections.at("BD")->getConnectionId().c_str());
  51. ASSERT_STREQ("D", connections.at("BD")->getStateId().c_str());
  52. }
  53. // additional functionality
  54. TEST_F(SerializableXMLStateTest, getValue)
  55. {
  56. std::shared_ptr<ls_std::State> x = std::make_shared<ls_std::State>("A");
  57. ls_std::SerializableXMLState serializable {x};
  58. ASSERT_STREQ("A", serializable.getValue()->getId().c_str());
  59. }
  60. TEST_F(SerializableXMLStateTest, setValue)
  61. {
  62. ls_std::SerializableXMLState serializable {std::make_shared<ls_std::State>("A")};
  63. ASSERT_STREQ("A", serializable.getValue()->getId().c_str());
  64. serializable.setValue(std::make_shared<ls_std::State>("C"));
  65. ASSERT_STREQ("C", serializable.getValue()->getId().c_str());
  66. }
  67. }
  68. */