disconnect test failed
This commit is contained in:
@@ -25,3 +25,4 @@ endmacro()
|
|||||||
pip_test(concurrent "")
|
pip_test(concurrent "")
|
||||||
pip_test(math "")
|
pip_test(math "")
|
||||||
pip_test(core "")
|
pip_test(core "")
|
||||||
|
pip_test(piobject "")
|
||||||
|
|||||||
147
tests/piobject/connect.cpp
Normal file
147
tests/piobject/connect.cpp
Normal file
@@ -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);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user