From 62e130f91b5b017b0205b0649ddee17b2d5a835a Mon Sep 17 00:00:00 2001 From: Andrey Date: Thu, 30 Sep 2021 18:41:01 +0300 Subject: [PATCH 1/3] disconnect test failed --- tests/CMakeLists.txt | 1 + tests/piobject/connect.cpp | 147 +++++++++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 tests/piobject/connect.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e514650f..20a71a39 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -25,3 +25,4 @@ endmacro() pip_test(concurrent "") pip_test(math "") pip_test(core "") +pip_test(piobject "") diff --git a/tests/piobject/connect.cpp b/tests/piobject/connect.cpp new file mode 100644 index 00000000..a1dcc8d7 --- /dev/null +++ b/tests/piobject/connect.cpp @@ -0,0 +1,147 @@ +#include "gtest/gtest.h" +#include "piobject.h" + + +class Object : public PIObject +{ + PIOBJECT(Object) + public: + Object() {x=0;} + void test() {event_test();} + void test_val() {event_val(x);} + int getX() const {return x;} + + EVENT(event_test) + EVENT1(event_val, int, arg) + + EVENT_HANDLER(void, handler_test) {x++;} + EVENT_HANDLER1(void, handler_val, int, arg) {x = arg;} +private: + int x; +}; + + +TEST(PiobjectConnections, CONNECT0) { + 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); + CONNECT0(void, &a, event_test, &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); +} + + +TEST(PiobjectConnections, CONNECT0_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); + CONNECT0(void, &a, event_test, &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); + a.piDisconnect(&b); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 1); + a.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 1); + b.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 1); +} + +TEST(PiobjectConnections, CONNECTU) { + 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); + CONNECTU(&a, event_test, &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); +} + +TEST(PiobjectConnections, CONNECTU_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); + CONNECTU(&a, event_test, &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); + a.piDisconnect(&b); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 1); + a.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 1); + b.test(); + ASSERT_EQ(a.getX(), 0); + ASSERT_EQ(b.getX(), 1); + a.handler_val(99); + ASSERT_EQ(a.getX(), 99); + ASSERT_EQ(b.getX(), 1); + CONNECTU(&a, event_val, &b, handler_val); + ASSERT_EQ(a.getX(), 99); + ASSERT_EQ(b.getX(), 1); + a.test_val(); + ASSERT_EQ(a.getX(), 99); + ASSERT_EQ(b.getX(), 99); + a.handler_val(-1); + ASSERT_EQ(a.getX(), -1); + ASSERT_EQ(b.getX(), 99); + a.piDisconnect(&a, "handler_val", &b); + ASSERT_EQ(a.getX(), -1); + ASSERT_EQ(b.getX(), 99); + a.test_val(); + ASSERT_EQ(a.getX(), -1); + ASSERT_EQ(b.getX(), 99); +} From 8accc28804c0dd270c7d60b661450830754c58da Mon Sep 17 00:00:00 2001 From: peri4 Date: Thu, 30 Sep 2021 19:28:30 +0300 Subject: [PATCH 2/3] test fix --- tests/piobject/connect.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/piobject/connect.cpp b/tests/piobject/connect.cpp index a1dcc8d7..d9411404 100644 --- a/tests/piobject/connect.cpp +++ b/tests/piobject/connect.cpp @@ -117,7 +117,7 @@ TEST(PiobjectConnections, CONNECTU_DISCONNECT) { b.test(); ASSERT_EQ(a.getX(), 0); ASSERT_EQ(b.getX(), 1); - a.piDisconnect(&b); + PIObject::piDisconnect(&a); ASSERT_EQ(a.getX(), 0); ASSERT_EQ(b.getX(), 1); a.test(); @@ -138,7 +138,7 @@ TEST(PiobjectConnections, CONNECTU_DISCONNECT) { a.handler_val(-1); ASSERT_EQ(a.getX(), -1); ASSERT_EQ(b.getX(), 99); - a.piDisconnect(&a, "handler_val", &b); + PIObject::piDisconnect(&a, "event_val", &b); ASSERT_EQ(a.getX(), -1); ASSERT_EQ(b.getX(), 99); a.test_val(); From bc7d129a9e00ff29ef78f39b2b4fe19f45c41a4c Mon Sep 17 00:00:00 2001 From: Andrey Date: Mon, 4 Oct 2021 12:07:01 +0300 Subject: [PATCH 3/3] piobject/connect.cpp tests --- tests/piobject/connect.cpp | 88 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) 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); +}