Explorar el Código

add connector+test

Willi Zschiebsch hace 5 años
padre
commit
66568b16fe

+ 3 - 1
lib/CMakeLists.txt

@@ -2,8 +2,9 @@ cmake_minimum_required(VERSION 3.8.0)
 project(mdd_lib)
 
 add_library(${PROJECT_NAME}
+	include/Connector.h
         include/HandlerModule
-	include/IConnector.h
+	include/IConnection.h
         include/IInput.h
         include/IModule.h
         include/Input.h
@@ -29,6 +30,7 @@ add_library(${PROJECT_NAME}
 	include/ProcessorStandard.h
 	include/state.h
 
+	src/Connector.cpp
         src/Input.cpp
         src/ModuleBase.cpp
         src/ModuleHTTP.cpp

+ 44 - 0
lib/include/Connector.h

@@ -0,0 +1,44 @@
+#ifndef CONNECTOR_H
+#define CONNECTOR_H
+#include "memory"
+#include "json.hpp"
+
+#include "Input.h"
+#include "Output.h"
+
+#include "ModuleHTTP.h"
+#include "ModuleMath.h"
+#include "ModuleMerge.h"
+#include "ModuleSplitt.h"
+#include "ModuleSQL.h"
+#include "ModuleSwitch.h"
+
+#include "ProcessorStandard.h"
+
+namespace mdd {
+	class Connector {
+
+	public:
+		/*
+		json{
+		"type": "StandardProcessor",
+		("params": [param1, param2,...])
+		("subs":[
+		{
+		"type": "Math",
+		"params":[param1,param2,...]
+		},
+		{
+		"type": "Math",
+		"params":[param1,param2,...]
+		}
+		],
+		"connections":[[in1,out1],[in2,out2],...]
+		})
+		*/
+		static std::shared_ptr<IModule> decode(const json& structure);
+		static const json& encode(const std::shared_ptr<IModule>& structure);
+	};
+}
+
+#endif

+ 4 - 4
lib/include/IConnector.h

@@ -1,17 +1,17 @@
-#ifndef ICONNECTOR_H
-#define ICONNECTOR_H
+#ifndef ICONNECTION_H
+#define ICONNECTION_H
 
 #include <vector>
 #include <memory>
 
 namespace mdd {
 	template <class T>
-	class IConnector {
+	class IConnection {
 	public:
 		virtual int addConnection(std::shared_ptr<T> conector) = 0;
 		virtual int removeConnection(std::shared_ptr<T> conector) = 0;
 		virtual bool connect(std::shared_ptr<T> conector) = 0;
-		virtual ~IConnector() {};
+		virtual ~IConnection() {};
 	};
 }
 

+ 2 - 2
lib/include/IInput.h

@@ -6,7 +6,7 @@
 #include "IOutput.h"
 #include "IUnique.h"
 #include "IState.h"
-#include "IConnector.h"
+#include "IConnection.h"
 #include "IOptimizable.h"
 #include <vector>
 
@@ -22,7 +22,7 @@ namespace mdd{
     class IInput 
         : public IUnique
         , public IState
-        , public IConnector<IOutput>
+        , public IConnection<IOutput>
         , public IOptimizable
     {
     public:

+ 2 - 2
lib/include/IOutput.h

@@ -6,7 +6,7 @@
 #include "IState.h"
 //#include "IInput.h"
 #include "IOptimizable.h"
-#include "IConnector.h"
+#include "IConnection.h"
 
 namespace mdd
 {
@@ -16,7 +16,7 @@ namespace mdd
     class IOutput 
         : public IUnique
         , public IState
-        , public IConnector<IInput>
+        , public IConnection<IInput>
         , public IOptimizable
     {
     public:

+ 17 - 0
lib/src/Connector.cpp

@@ -0,0 +1,17 @@
+#include "..\include\Connector.h"
+namespace mdd {
+	std::shared_ptr<IModule> Connector::decode(const json& structure)
+	{
+		std::shared_ptr<IModule> ret;
+
+		return ret;
+	}
+	const json&  Connector::encode(const std::shared_ptr<IModule>& module)
+	{
+		json ret;
+
+		return ret;
+	}
+
+}
+

+ 1 - 0
lib/test/CMakeLists.txt

@@ -1,5 +1,6 @@
 add_executable(auslegung_test
 	test_Ansys.cpp
+	test_Connector
         test_ModuleHTTP.cpp
         test_ModuleMath.cpp
         test_ModuleSQL.cpp

+ 66 - 0
lib/test/test_Connector.cpp

@@ -0,0 +1,66 @@
+#include <gtest/gtest.h>
+#include <json.hpp>
+#include "Connector.h"
+
+using namespace mdd;
+
+TEST(Connector, encode) {
+    //decode (3+4)*2
+    std::vector<std::string> inputs;
+    std::shared_ptr<ModuleMath> f1 = std::make_shared<ModuleMath>(MathOperation::MULTIPLY);
+    inputs = f1->getInputIDs();
+    f1->getInput(inputs[0])->setValue() = { 3 };
+    f1->getInput(inputs[1])->setValue() = { 4 };
+
+    std::shared_ptr<ModuleMath> f2 = std::make_shared<ModuleMath>(MathOperation::ADD);
+    inputs = f2->getInputIDs();
+    f2->getInput(inputs[0])->connect(f1->getOutput(f1->getOutputIDs()[0]));
+    f2->getInput(inputs[1])->setValue() = { 2 };
+
+    std::shared_ptr<ProcessorStandard> processor = std::make_shared<ProcessorStandard>();
+    processor->addModule(f1);
+    processor->addModule(f2);
+
+    processor->addModuleOutput(f2, f2->getOutput(f2->getOutputIDs()[0]));
+    processor->update();
+
+    EXPECT_EQ((int)f1->getOutput(f1->getOutputIDs()[0])->getValue()[0], 7);
+    EXPECT_EQ((int)f2->getOutput(f2->getOutputIDs()[0])->getValue()[0], 14);
+    EXPECT_EQ((int)processor->getOutput(processor->getOutputIDs()[1])->getValue()[0], 14);
+
+    auto code = Connector::encode(processor);
+    std::cout << code << std::endl;
+    json m1;
+    m1["type"] = "Math";
+    m1["params"] = { "param1", "param2","..." };
+    json m2;
+    m2["type"] = "Math";
+    m2["params"] = { "param1", "param2","..." };
+
+    json p;
+    p["type"] = "StandardProcessor";
+    p["subs"] = { m1, m2 };
+    p["connections"] = { {"in1", "out1"}, {"in2", "out2"} };
+
+   
+    EXPECT_EQ(code.dump(), p.dump());
+}
+
+TEST(Connector, decode) {
+    //parse (3+4)*2
+    json m1;
+    m1["type"] = "Math";
+    m1["params"] = { "param1", "param2","..." };
+    json m2;
+    m2["type"] = "Math";
+    m2["params"] = { "param1", "param2","..." };
+
+    json p;
+    p["type"] = "StandardProcessor";
+    p["subs"] = {m1, m2};
+    p["connections"] = { {"in1", "out1"}, {"in2", "out2"} };
+
+    auto module = Connector::decode(p);
+    auto ids_out = module->getOutputIDs();
+    EXPECT_EQ((int)module->getOutput(ids_out[0])->getValue()[0], 14);
+}