test_Connector.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include <gtest/gtest.h>
  2. #include <json.hpp>
  3. #include "Connector.h"
  4. using namespace mdd;
  5. TEST(Connector, encode) {
  6. //decode (3+4)*2
  7. std::vector<std::string> inputs;
  8. std::shared_ptr<ModuleMath> f1 = std::make_shared<ModuleMath>(MathOperation::MULTIPLY);
  9. inputs = f1->getInputIDs();
  10. f1->getInput(inputs[0])->setValue() = { 3 };
  11. f1->getInput(inputs[1])->setValue() = { 4 };
  12. std::shared_ptr<ModuleMath> f2 = std::make_shared<ModuleMath>(MathOperation::ADD);
  13. inputs = f2->getInputIDs();
  14. f2->getInput(inputs[0])->connect(f1->getOutput(f1->getOutputIDs()[0]));
  15. f2->getInput(inputs[1])->setValue() = { 2 };
  16. std::shared_ptr<ProcessorStandard> processor = std::make_shared<ProcessorStandard>();
  17. processor->addModule(f1);
  18. processor->addModule(f2);
  19. processor->addModuleOutput(f2, f2->getOutput(f2->getOutputIDs()[0]));
  20. processor->update();
  21. EXPECT_EQ((int)f1->getOutput(f1->getOutputIDs()[0])->getValue()[0], 7);
  22. EXPECT_EQ((int)f2->getOutput(f2->getOutputIDs()[0])->getValue()[0], 14);
  23. EXPECT_EQ((int)processor->getOutput(processor->getOutputIDs()[1])->getValue()[0], 14);
  24. auto code = Connector::encode(processor);
  25. std::cout << code << std::endl;
  26. json m1;
  27. m1["type"] = "Math";
  28. m1["params"] = { "param1", "param2","..." };
  29. json m2;
  30. m2["type"] = "Math";
  31. m2["params"] = { "param1", "param2","..." };
  32. json p;
  33. p["type"] = "StandardProcessor";
  34. p["subs"] = { m1, m2 };
  35. p["connections"] = { {"in1", "out1"}, {"in2", "out2"} };
  36. EXPECT_EQ(code.dump(), p.dump());
  37. }
  38. TEST(Connector, decode) {
  39. //parse (3+4)*2
  40. json m1;
  41. m1["type"] = "Math";
  42. m1["params"] = { "param1", "param2","..." };
  43. json m2;
  44. m2["type"] = "Math";
  45. m2["params"] = { "param1", "param2","..." };
  46. json p;
  47. p["type"] = "StandardProcessor";
  48. p["subs"] = {m1, m2};
  49. p["connections"] = { {"in1", "out1"}, {"in2", "out2"} };
  50. auto module = Connector::decode(p);
  51. auto ids_out = module->getOutputIDs();
  52. EXPECT_EQ((int)module->getOutput(ids_out[0])->getValue()[0], 14);
  53. }