Browse Source

Add SerializableJSONBooleanFactory class

Patrick-Christopher Mattulat 2 years ago
parent
commit
781e833d0c

+ 4 - 2
CMakeLists.txt

@@ -96,7 +96,8 @@ set(SOURCE_FILES
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/io/kv/KVPair.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/io/kv/KVDocument.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/io/kv/KVParser.cpp
-        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/io/kv/KVReader.cpp)
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/io/kv/KVReader.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/source/ls_std/factory/serialization/boxing/SerializableJSONBooleanFactory.cpp)
 
 if (${LS_STD_BUILD_WITH_TESTS})
     set(TEST_FILES
@@ -155,7 +156,8 @@ if (${LS_STD_BUILD_WITH_TESTS})
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/kv/KVPairTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/kv/KVDocumentTest.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/kv/KVParserTest.cpp
-            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/kv/KVReaderTest.cpp)
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/kv/KVReaderTest.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/factory/serialization/boxing/SerializableJSONBooleanFactoryTest.cpp)
 endif ()
 
 ##########################################################

+ 1 - 0
include/ls_std/base/Class.hpp

@@ -19,6 +19,7 @@ namespace ls_std
     public:
 
       explicit Class(std::string _name);
+      Class();
       virtual ~Class() = default;
 
       std::string getClassName();

+ 29 - 0
include/ls_std/factory/serialization/boxing/SerializableJSONBooleanFactory.hpp

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

+ 3 - 0
include/ls_std/ls_std.hpp

@@ -91,4 +91,7 @@
 #include "event/IEventSubscriber.hpp"
 #include "event/EventManager.hpp"
 
+#include "factory/IFactory.hpp"
+#include "factory/serialization/boxing/SerializableJSONBooleanFactory.hpp"
+
 #endif

+ 3 - 0
source/ls_std/base/Class.cpp

@@ -17,3 +17,6 @@ std::string ls_std::Class::getClassName()
 {
   return this->name;
 }
+
+ls_std::Class::Class()
+{}

+ 24 - 0
source/ls_std/factory/serialization/boxing/SerializableJSONBooleanFactory.cpp

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

+ 34 - 0
test/cases/factory/serialization/boxing/SerializableJSONBooleanFactoryTest.cpp

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