moved event handling into Modules instead of having seperate event listener objects

This commit is contained in:
2010-07-29 00:02:12 +08:00
parent 91cdebd33a
commit b86d28541a
19 changed files with 152 additions and 165 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ SET ( TESTS_SRCS
main.cc
CommandsTests.cc
EntityTests.cc
EventsBaseTests.cc
EventBaseTests.cc
PhysicsTests.cc
ControllerBaseTests.cc
)
@@ -1,7 +1,8 @@
#include <UnitTest++.h>
#include "Logging.h"
#include "EventsBase.h"
#include "Module.h"
#include "EventManager.h"
using namespace std;
using namespace Engine;
@@ -9,18 +10,21 @@ using namespace Engine;
int global_event_type = -1;
string global_event_string = "";
class TestEventListener : public EventListenerBase {
public:
TestEventListener() {
mName = "TestEventListener";
}
struct EventsFixture;
virtual bool HandleEvent (const EventBasePtr &event) const {
class TestEventModule : public Module {
private:
virtual int OnInit (int argc, char* argv[]) {
return 0;
};
virtual bool OnReceiveEvent (const EventBasePtr &event) {
global_event_type = event->mEventType;
global_event_string = event->mEventData;
return true;
}
}
friend class EventsFixture;
};
struct EventsFixture {
@@ -43,17 +47,17 @@ struct EventsFixture {
Logging LoggingModule;
TestEventListener Listener;
TestEventModule TestModule;
EventManager *TestEventManager;
};
TEST_FIXTURE ( EventsFixture, TestEventListenerHandleEvent ) {
TEST_FIXTURE ( EventsFixture, TestEventModuleSendEvent ) {
EventBasePtr event (new EventBase);
event->mEventType = 1;
event->mEventData = "test";
Listener.HandleEvent (event);
TestModule.SendEvent (event);
CHECK_EQUAL (1, global_event_type);
CHECK_EQUAL ("test", global_event_string);
@@ -65,17 +69,17 @@ TEST_FIXTURE ( EventsFixture, TestTestEventManagerZeroListeners ) {
}
TEST_FIXTURE ( EventsFixture, TestTestEventManagerAddListener ) {
TestEventManager->RegisterListener (&Listener, 1);
TestEventManager->RegisterListener (&TestModule, 1);
CHECK_EQUAL (true, TestEventManager->HasEventTypeListener(1));
CHECK_EQUAL (false, TestEventManager->HasEventTypeListener(2));
TestEventManager->RegisterListener (&Listener, 1);
TestEventManager->RegisterListener (&TestModule, 1);
CHECK_EQUAL (2, TestEventManager->GetEventTypeListenerCount(1));
}
TEST_FIXTURE ( EventsFixture, TestTestEventManagerTriggerEvent ) {
TestEventManager->RegisterListener (&Listener, 1);
TestEventManager->RegisterListener (&TestModule, 1);
CHECK_EQUAL (true, TestEventManager->HasEventTypeListener(1));
@@ -94,7 +98,7 @@ TEST_FIXTURE ( EventsFixture, TestTestEventManagerTriggerEvent ) {
}
TEST_FIXTURE ( EventsFixture, TestTestEventManagerQueueEvent ) {
TestEventManager->RegisterListener (&Listener, 1);
TestEventManager->RegisterListener (&TestModule, 1);
EventBasePtr event (new EventBase);
@@ -111,7 +115,7 @@ TEST_FIXTURE ( EventsFixture, TestTestEventManagerQueueEvent ) {
}
TEST_FIXTURE ( EventsFixture, TestTestEventManagerProcess ) {
TestEventManager->RegisterListener (&Listener, 1);
TestEventManager->RegisterListener (&TestModule, 1);
EventBasePtr event (new EventBase);