pipeline_test.cpp
Go to the documentation of this file.
1 #include <catch2/catch_all.hpp>
2 
3 // Include depthai library
4 #include <depthai/depthai.hpp>
5 
6 TEST_CASE("Pipeline link and remove") {
8  auto x_in = p.create<dai::node::XLinkIn>();
9  auto x_out = p.create<dai::node::XLinkOut>();
10  x_in->out.link(x_out->input);
11  p.remove(x_in);
12 }
13 
14 TEST_CASE("Pipeline node creation, link, unlink and removal") {
15  dai::Pipeline p;
16  auto cam = p.create<dai::node::ColorCamera>();
17  auto xlink = p.create<dai::node::XLinkOut>();
18 
19  REQUIRE(p.getConnections().size() == 0);
20  REQUIRE(p.getAllNodes().size() == 2);
21 
22  cam->preview.link(xlink->input);
23 
24  REQUIRE(p.getConnections().size() == 1);
25 
26  p.remove(xlink);
27 
28  REQUIRE(p.getConnections().size() == 0);
29  REQUIRE(p.getAllNodes().size() == 1);
30 
31  p.remove(cam);
32 
33  REQUIRE(p.getConnections().size() == 0);
34  REQUIRE(p.getAllNodes().size() == 0);
35 }
36 
37 TEST_CASE("Cross pipeline link with InputMap and OutputMap") {
38  dai::Pipeline p1;
39  dai::Pipeline p2;
40  auto s1 = p1.create<dai::node::Script>();
41  auto s2 = p2.create<dai::node::Script>();
42 
43  // First check if canConnect returns false
44  REQUIRE_FALSE(s1->outputs["test"].canConnect(s2->inputs["input1"]));
45  // Then check that actually linking throws
46  REQUIRE_THROWS(s1->outputs["test"].link(s2->inputs["input1"]));
47 }
48 
49 TEST_CASE("Cross pipeline link with Input and Output") {
50  dai::Pipeline p1;
51  dai::Pipeline p2;
52  auto xout = p1.create<dai::node::XLinkOut>();
53  auto xin = p2.create<dai::node::XLinkIn>();
54 
55  // First check if canConnect returns false
56  REQUIRE_FALSE(xin->out.canConnect(xout->input));
57  // Then check that actually linking throws
58  REQUIRE_THROWS(xin->out.link(xout->input));
59 }
60 
61 TEST_CASE("Duplicate xlink stream names") {
62  dai::Pipeline p;
63  auto sysInfo1 = p.create<dai::node::SystemLogger>();
64  auto sysInfo2 = p.create<dai::node::SystemLogger>();
65  auto xout1 = p.create<dai::node::XLinkOut>();
66  auto xout2 = p.create<dai::node::XLinkOut>();
67  sysInfo1->out.link(xout1->input);
68  sysInfo2->out.link(xout2->input);
69  xout1->setStreamName("test1");
70  xout2->setStreamName("test1");
71  REQUIRE_THROWS_AS(dai::Device{p}, std::invalid_argument);
72 
73  p = {};
74  auto script1 = p.create<dai::node::Script>();
75  auto script2 = p.create<dai::node::Script>();
76  auto xin1 = p.create<dai::node::XLinkIn>();
77  auto xin2 = p.create<dai::node::XLinkIn>();
78  xin1->out.link(script1->inputs["in"]);
79  xin2->out.link(script2->inputs["in"]);
80  xin1->setStreamName("test2");
81  xin1->setStreamName("test2");
82  REQUIRE_THROWS_AS(dai::Device{p}, std::invalid_argument);
83 }
dai::node::XLinkIn::out
Output out
Definition: XLinkIn.hpp:25
dai::node::XLinkOut
XLinkOut node. Sends messages over XLink.
Definition: XLinkOut.hpp:14
dai::Pipeline
Represents the pipeline, set of nodes and connections between them.
Definition: Pipeline.hpp:100
dai::node::SystemLogger::out
Output out
Definition: SystemLogger.hpp:25
dai::Pipeline::remove
void remove(std::shared_ptr< Node > node)
Removes a node from pipeline.
Definition: Pipeline.hpp:150
dai::Pipeline::getAllNodes
std::vector< std::shared_ptr< const Node > > getAllNodes() const
Get a vector of all nodes.
Definition: Pipeline.hpp:155
dai::node::ColorCamera
ColorCamera node. For use with color sensors.
Definition: ColorCamera.hpp:16
dai::Pipeline::getConnections
std::vector< Node::Connection > getConnections() const
Get all connections.
Definition: Pipeline.hpp:173
dai::node::SystemLogger
SystemLogger node. Send system information periodically.
Definition: SystemLogger.hpp:14
dai::node::XLinkOut::input
Input input
Definition: XLinkOut.hpp:27
depthai.hpp
dai::Pipeline::create
std::shared_ptr< N > create()
Definition: Pipeline.hpp:145
dai::node::Script
Definition: Script.hpp:15
dai::Device
Definition: Device.hpp:21
dai::node::Script::inputs
InputMap inputs
Definition: Script.hpp:30
TEST_CASE
TEST_CASE("Pipeline link and remove")
Definition: pipeline_test.cpp:6
dai::node::XLinkIn
XLinkIn node. Receives messages over XLink.
Definition: XLinkIn.hpp:14
dai::Node::Output::link
void link(const Input &in)
Definition: Node.cpp:84
dai::node::XLinkOut::setStreamName
void setStreamName(const std::string &name)
Definition: XLinkOut.cpp:13


depthai
Author(s): Martin Peterlin
autogenerated on Sat Mar 22 2025 02:58:19