summaryrefslogtreecommitdiff
path: root/test/core/NodeTest.cpp
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-02 16:00:01 +0100
committerAndreas Stöckel <andreas@somweyr.de>2015-01-02 16:00:01 +0100
commit128ac91adfdab4a21836c4f19d7024dba9790f9e (patch)
tree20ae14f5c9e2cbd1e2ae6ce37f4fb575c5ea237a /test/core/NodeTest.cpp
parentdd3fccac307527d3b1285f6ac7966b6d527627cb (diff)
Moved event system from the Node class to the Managed class (with zero overhead if is not used)
Diffstat (limited to 'test/core/NodeTest.cpp')
-rw-r--r--test/core/NodeTest.cpp196
1 files changed, 0 insertions, 196 deletions
diff --git a/test/core/NodeTest.cpp b/test/core/NodeTest.cpp
index 334fcc8..d0cf08e 100644
--- a/test/core/NodeTest.cpp
+++ b/test/core/NodeTest.cpp
@@ -87,201 +87,5 @@ TEST(Node, simpleResolve)
ASSERT_TRUE(child11 == *(res.begin()));
}
-class TestManagedEventOwner : public Managed {
-public:
- using Managed::Managed;
-
- int triggered = false;
-};
-
-static void handleEvent(const Event &ev, Handle<Managed> owner)
-{
- owner.cast<TestManagedEventOwner>()->triggered++;
-}
-
-static void handleEventStop(const Event &ev, Handle<Managed> owner)
-{
- owner.cast<TestManagedEventOwner>()->triggered++;
- ev.stopPropagation();
-}
-
-TEST(Node, events)
-{
- Manager mgr;
- Rooted<Node> n{new Node(mgr)};
-
- Rooted<TestManagedEventOwner> e1{new TestManagedEventOwner(mgr)};
- Rooted<TestManagedEventOwner> e2{new TestManagedEventOwner(mgr)};
- Rooted<TestManagedEventOwner> e3{new TestManagedEventOwner(mgr)};
-
- ASSERT_EQ(0, n->registerEventHandler(EventType::UPDATE, handleEvent, e1));
- ASSERT_EQ(1, n->registerEventHandler(EventType::NAME_CHANGE, handleEvent, e2));
- ASSERT_EQ(2, n->registerEventHandler(EventType::NAME_CHANGE, handleEvent, e3));
-
- ASSERT_FALSE(e1->triggered);
- ASSERT_FALSE(e2->triggered);
- ASSERT_FALSE(e3->triggered);
-
- {
- Event ev{EventType::ADD_CHILD};
- ASSERT_FALSE(n->triggerEvent(ev));
- }
-
- {
- Event ev{EventType::UPDATE};
- ASSERT_TRUE(n->triggerEvent(ev));
- ASSERT_EQ(1, e1->triggered);
- ASSERT_EQ(0, e2->triggered);
- ASSERT_EQ(0, e3->triggered);
- }
-
- {
- Event ev{EventType::NAME_CHANGE};
- ASSERT_TRUE(n->triggerEvent(ev));
- ASSERT_EQ(1, e1->triggered);
- ASSERT_EQ(1, e2->triggered);
- ASSERT_EQ(1, e3->triggered);
- }
-
- ASSERT_TRUE(n->unregisterEventHandler(1));
- ASSERT_FALSE(n->unregisterEventHandler(1));
-
- {
- Event ev{EventType::NAME_CHANGE};
- ASSERT_TRUE(n->triggerEvent(ev));
- ASSERT_EQ(1, e1->triggered);
- ASSERT_EQ(1, e2->triggered);
- ASSERT_EQ(2, e3->triggered);
- }
-
- ASSERT_TRUE(n->unregisterEventHandler(0));
- ASSERT_FALSE(n->unregisterEventHandler(0));
-
- {
- Event ev{EventType::UPDATE};
- ASSERT_FALSE(n->triggerEvent(ev));
- ASSERT_EQ(1, e1->triggered);
- ASSERT_EQ(1, e2->triggered);
- ASSERT_EQ(2, e3->triggered);
- }
-
- ASSERT_TRUE(n->unregisterEventHandler(2));
- ASSERT_FALSE(n->unregisterEventHandler(2));
-
- {
- Event ev{EventType::NAME_CHANGE};
- ASSERT_FALSE(n->triggerEvent(ev));
- ASSERT_EQ(1, e1->triggered);
- ASSERT_EQ(1, e2->triggered);
- ASSERT_EQ(2, e3->triggered);
- }
-}
-
-TEST(Node, eventBubbling)
-{
- Manager mgr;
- Rooted<Node> n1{new Node(mgr)};
- Rooted<Node> n2{new Node(mgr, n1)};
-
- Rooted<TestManagedEventOwner> e1{new TestManagedEventOwner(mgr)};
- Rooted<TestManagedEventOwner> e2{new TestManagedEventOwner(mgr)};
- Rooted<TestManagedEventOwner> e3{new TestManagedEventOwner(mgr)};
-
- ASSERT_EQ(0, n1->registerEventHandler(EventType::UPDATE, handleEvent, e1, true));
- ASSERT_EQ(1, n1->registerEventHandler(EventType::NAME_CHANGE, handleEvent, e2, true));
- ASSERT_EQ(2, n1->registerEventHandler(EventType::NAME_CHANGE, handleEvent, e3, false));
-
- ASSERT_FALSE(e1->triggered);
- ASSERT_FALSE(e2->triggered);
- ASSERT_FALSE(e3->triggered);
-
- {
- Event ev{EventType::ADD_CHILD};
- ASSERT_FALSE(n2->triggerEvent(ev));
- }
-
- {
- Event ev{EventType::UPDATE};
- ASSERT_TRUE(n2->triggerEvent(ev));
- ASSERT_EQ(1, e1->triggered);
- ASSERT_EQ(0, e2->triggered);
- ASSERT_EQ(0, e3->triggered);
- }
-
- {
- Event ev{EventType::UPDATE, false};
- ASSERT_FALSE(n2->triggerEvent(ev));
- ASSERT_EQ(1, e1->triggered);
- ASSERT_EQ(0, e2->triggered);
- ASSERT_EQ(0, e3->triggered);
- }
-
- {
- Event ev{EventType::NAME_CHANGE};
- ASSERT_TRUE(n2->triggerEvent(ev));
- ASSERT_EQ(1, e1->triggered);
- ASSERT_EQ(1, e2->triggered);
- ASSERT_EQ(0, e3->triggered);
- }
-
- ASSERT_TRUE(n1->unregisterEventHandler(1));
- ASSERT_FALSE(n1->unregisterEventHandler(1));
-
- {
- Event ev{EventType::NAME_CHANGE};
- ASSERT_FALSE(n2->triggerEvent(ev));
- ASSERT_EQ(1, e1->triggered);
- ASSERT_EQ(1, e2->triggered);
- ASSERT_EQ(0, e3->triggered);
- }
-
- ASSERT_TRUE(n1->unregisterEventHandler(0));
- ASSERT_FALSE(n1->unregisterEventHandler(0));
-
- {
- Event ev{EventType::UPDATE};
- ASSERT_FALSE(n2->triggerEvent(ev));
- ASSERT_EQ(1, e1->triggered);
- ASSERT_EQ(1, e2->triggered);
- ASSERT_EQ(0, e3->triggered);
- }
-
- ASSERT_TRUE(n1->unregisterEventHandler(2));
- ASSERT_FALSE(n1->unregisterEventHandler(2));
-
- {
- Event ev{EventType::NAME_CHANGE};
- ASSERT_FALSE(n2->triggerEvent(ev));
- ASSERT_EQ(1, e1->triggered);
- ASSERT_EQ(1, e2->triggered);
- ASSERT_EQ(0, e3->triggered);
- }
-}
-
-TEST(Node, eventStopPropagation)
-{
- Manager mgr;
- Rooted<Node> n1{new Node(mgr)};
- Rooted<Node> n2{new Node(mgr, n1)};
-
- Rooted<TestManagedEventOwner> e1{new TestManagedEventOwner(mgr)};
- Rooted<TestManagedEventOwner> e2{new TestManagedEventOwner(mgr)};
-
- ASSERT_EQ(0, n1->registerEventHandler(EventType::UPDATE, handleEvent, e1, true));
- ASSERT_EQ(0, n2->registerEventHandler(EventType::UPDATE, handleEventStop, e2, true));
-
- ASSERT_FALSE(e1->triggered);
- ASSERT_FALSE(e2->triggered);
-
- {
- Event ev{EventType::UPDATE};
- n2->triggerEvent(ev);
-
- ASSERT_EQ(0, e1->triggered);
- ASSERT_EQ(1, e2->triggered);
- }
-
-}
-
}
}