From 128ac91adfdab4a21836c4f19d7024dba9790f9e Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Fri, 2 Jan 2015 16:00:01 +0100 Subject: Moved event system from the Node class to the Managed class (with zero overhead if is not used) --- test/core/NodeTest.cpp | 196 ------------------------------------------------- 1 file changed, 196 deletions(-) (limited to 'test/core/NodeTest.cpp') 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 owner) -{ - owner.cast()->triggered++; -} - -static void handleEventStop(const Event &ev, Handle owner) -{ - owner.cast()->triggered++; - ev.stopPropagation(); -} - -TEST(Node, events) -{ - Manager mgr; - Rooted n{new Node(mgr)}; - - Rooted e1{new TestManagedEventOwner(mgr)}; - Rooted e2{new TestManagedEventOwner(mgr)}; - Rooted 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 n1{new Node(mgr)}; - Rooted n2{new Node(mgr, n1)}; - - Rooted e1{new TestManagedEventOwner(mgr)}; - Rooted e2{new TestManagedEventOwner(mgr)}; - Rooted 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 n1{new Node(mgr)}; - Rooted n2{new Node(mgr, n1)}; - - Rooted e1{new TestManagedEventOwner(mgr)}; - Rooted 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); - } - -} - } } -- cgit v1.2.3