diff --git a/tests/piobject/connect.cpp b/tests/piobject/connect.cpp index d9411404..b254cdf8 100644 --- a/tests/piobject/connect.cpp +++ b/tests/piobject/connect.cpp @@ -145,3 +145,91 @@ TEST(PiobjectConnections, CONNECTU_DISCONNECT) { ASSERT_EQ(a.getX(), -1); ASSERT_EQ(b.getX(), 99); } + + +TEST(PiobjectConnections, CONNECTL) { + Object a; + Object b; + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 0); + a.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 0); + b.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 0); + CONNECTL(&a, event_test, [&b](){ + b.handler_val(7); + }); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 0); + a.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 7); + b.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 7); +} + +TEST(PiobjectConnections, CONNECTL_DISCONNECT) { + Object a; + Object b; + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 0); + a.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 0); + b.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 0); + CONNECTL(&a, event_test, [&b](){ + b.handler_test(); + }); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 0); + a.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 1); + b.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 1); + b.handler_test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 2); + PIObject::piDisconnect(&a); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 2); + a.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 2); +} + +TEST(PiobjectConnections, CONNECTL_twice) { + Object a; + Object b; + CONNECTL(&a, event_test, [&b](){ + b.handler_test(); + }); + a.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 1); + CONNECTL(&a, event_test, [&b](){ + b.handler_test(); + }); + a.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 3); + b.handler_val(0); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 0); + PIObject::piDisconnect(&a); + a.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 0); + CONNECTL(&a, event_test, [&b](){ + b.handler_test(); + }); + a.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 1); +}