瀏覽代碼

Add SerializableJSONEventFactory class

Patrick-Christopher Mattulat 3 年之前
父節點
當前提交
9e65210ee4

+ 3 - 1
CMakeLists.txt

@@ -104,7 +104,8 @@ set(SOURCE_FILES
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/factory/serialization/boxing/SerializableJSONFloatFactory.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/factory/serialization/boxing/SerializableJSONIntegerFactory.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/factory/serialization/boxing/SerializableJSONLongFactory.cpp
-        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/factory/serialization/boxing/SerializableJSONStringFactory.cpp)
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/factory/serialization/boxing/SerializableJSONStringFactory.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/factory/serialization/event/SerializableJSONEventFactory.cpp)
 
 if (${LS_STD_BUILD_WITH_TESTS})
     set(TEST_FILES
@@ -171,6 +172,7 @@ if (${LS_STD_BUILD_WITH_TESTS})
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/factory/serialization/boxing/SerializableJSONIntegerFactoryTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/factory/serialization/boxing/SerializableJSONLongFactoryTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/factory/serialization/boxing/SerializableJSONStringFactoryTest.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/factory/serialization/event/SerializableJSONEventFactoryTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/factory/SerializableTestFactory.cpp)
 endif ()
 

+ 29 - 0
include/ls_std/factory/serialization/event/SerializableJSONEventFactory.hpp

@@ -0,0 +1,29 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2021-04-30
+ * Changed:         2021-04-30
+ *
+ * */
+
+#ifndef LS_STD_SERIALIZABLE_JSON_EVENT_FACTORY_HPP
+#define LS_STD_SERIALIZABLE_JSON_EVENT_FACTORY_HPP
+
+#include <ls_std/factory/IFactory.hpp>
+#include <memory>
+
+namespace ls_std
+{
+  class SerializableJSONEventFactory : public ls_std::Class, public ls_std::IFactory
+  {
+    public:
+
+      SerializableJSONEventFactory();
+      ~SerializableJSONEventFactory() override = default;
+
+      std::shared_ptr<ls_std::Class> build() override;
+  };
+}
+
+#endif

+ 2 - 1
include/ls_std/ls_std.hpp

@@ -3,7 +3,7 @@
  * Company:         Lynar Studios
  * E-Mail:          webmaster@lynarstudios.com
  * Created:         2020-10-29
- * Changed:         2021-04-25
+ * Changed:         2021-04-30
  *
  * */
 
@@ -99,5 +99,6 @@
 #include "factory/serialization/boxing/SerializableJSONIntegerFactory.hpp"
 #include "factory/serialization/boxing/SerializableJSONLongFactory.hpp"
 #include "factory/serialization/boxing/SerializableJSONStringFactory.hpp"
+#include "factory/serialization/event/SerializableJSONEventFactory.hpp"
 
 #endif

+ 24 - 0
source/ls_std/factory/serialization/event/SerializableJSONEventFactory.cpp

@@ -0,0 +1,24 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2021-04-30
+ * Changed:         2021-04-30
+ *
+ * */
+
+#include <ls_std/factory/serialization/event/SerializableJSONEventFactory.hpp>
+#include <ls_std/event/Event.hpp>
+#include <ls_std/serialization/event/SerializableJSONEvent.hpp>
+
+ls_std::SerializableJSONEventFactory::SerializableJSONEventFactory() : ls_std::Class("SerializableJSONEventFactory")
+{}
+
+std::shared_ptr<ls_std::Class> ls_std::SerializableJSONEventFactory::build()
+{
+  std::shared_ptr<ls_std::Event> requestedObject = std::make_shared<ls_std::Event>("TMP_ID");
+  std::shared_ptr<ls_std::ISerializable> serializable = std::make_shared<ls_std::SerializableJSONEvent>(requestedObject);
+  requestedObject->setSerializable(serializable);
+
+  return std::dynamic_pointer_cast<ls_std::Class>(requestedObject);
+}

+ 35 - 0
test/cases/factory/serialization/event/SerializableJSONEventFactoryTest.cpp

@@ -0,0 +1,35 @@
+/*
+ * Author:          Patrick-Christopher Mattulat
+ * Company:         Lynar Studios
+ * E-Mail:          webmaster@lynarstudios.com
+ * Created:         2021-04-30
+ * Changed:         2021-04-30
+ *
+ * */
+
+#include <gtest/gtest.h>
+#include <ls_std/ls_std.hpp>
+
+namespace
+{
+  class SerializableJSONEventFactoryTest : public ::testing::Test
+  {
+    protected:
+
+      SerializableJSONEventFactoryTest() = default;
+      ~SerializableJSONEventFactoryTest() override = default;
+
+      void SetUp() override
+      {}
+
+      void TearDown() override
+      {}
+  };
+
+  TEST_F(SerializableJSONEventFactoryTest, build)
+  {
+    std::shared_ptr<ls_std::Event> value = std::dynamic_pointer_cast<ls_std::Event>(ls_std::SerializableJSONEventFactory{}.build());
+    ASSERT_TRUE(value != nullptr);
+    ASSERT_STREQ("Event", value->getClassName().c_str());
+  }
+}