131 lines
3.3 KiB
C++
131 lines
3.3 KiB
C++
#include <UnitTest++.h>
|
|
|
|
#include "Logging.h"
|
|
#include "EventsBase.h"
|
|
|
|
using namespace std;
|
|
using namespace Engine;
|
|
|
|
int global_event_type = -1;
|
|
string global_event_string = "";
|
|
|
|
class TestEventListener : public EventListenerBase {
|
|
public:
|
|
TestEventListener() {
|
|
mName = "TestEventListener";
|
|
}
|
|
|
|
virtual bool HandleEvent (const EventBasePtr &event) const {
|
|
global_event_type = event->mEventType;
|
|
global_event_string = event->mEventData;
|
|
|
|
return true;
|
|
}
|
|
};
|
|
|
|
struct EventsFixture {
|
|
EventsFixture () {
|
|
LoggingModule.Init (0, NULL);
|
|
LoggingModule.SetLogPrintLevel (LogLevelWarning);
|
|
|
|
TestEventManager = new EventManager;
|
|
|
|
global_event_type = -1;
|
|
global_event_string = "";
|
|
}
|
|
|
|
~EventsFixture () {
|
|
delete TestEventManager;
|
|
TestEventManager = NULL;
|
|
|
|
LoggingModule.Destroy ();
|
|
}
|
|
|
|
Logging LoggingModule;
|
|
|
|
TestEventListener Listener;
|
|
EventManager *TestEventManager;
|
|
};
|
|
|
|
TEST_FIXTURE ( EventsFixture, TestEventListenerHandleEvent ) {
|
|
EventBasePtr event (new EventBase);
|
|
|
|
event->mEventType = 1;
|
|
event->mEventData = "test";
|
|
|
|
Listener.HandleEvent (event);
|
|
|
|
CHECK_EQUAL (1, global_event_type);
|
|
CHECK_EQUAL ("test", global_event_string);
|
|
}
|
|
|
|
TEST_FIXTURE ( EventsFixture, TestTestEventManagerZeroListeners ) {
|
|
CHECK_EQUAL (false, TestEventManager->HasEventTypeListener(123));
|
|
CHECK_EQUAL (0, TestEventManager->GetEventTypeListenerCount(123));
|
|
}
|
|
|
|
TEST_FIXTURE ( EventsFixture, TestTestEventManagerAddListener ) {
|
|
TestEventManager->RegisterListener (&Listener, 1);
|
|
|
|
CHECK_EQUAL (true, TestEventManager->HasEventTypeListener(1));
|
|
CHECK_EQUAL (false, TestEventManager->HasEventTypeListener(2));
|
|
|
|
TestEventManager->RegisterListener (&Listener, 1);
|
|
CHECK_EQUAL (2, TestEventManager->GetEventTypeListenerCount(1));
|
|
}
|
|
|
|
TEST_FIXTURE ( EventsFixture, TestTestEventManagerTriggerEvent ) {
|
|
TestEventManager->RegisterListener (&Listener, 1);
|
|
|
|
CHECK_EQUAL (true, TestEventManager->HasEventTypeListener(1));
|
|
|
|
EventBasePtr event (new EventBase);
|
|
|
|
event->mEventType = 1;
|
|
event->mEventData = "test";
|
|
|
|
CHECK_EQUAL (true, TestEventManager->TriggerEvent (event));
|
|
|
|
CHECK_EQUAL (1, global_event_type);
|
|
CHECK_EQUAL ("test", global_event_string);
|
|
|
|
event->mEventType = 0;
|
|
CHECK_EQUAL (false, TestEventManager->TriggerEvent (event));
|
|
}
|
|
|
|
TEST_FIXTURE ( EventsFixture, TestTestEventManagerQueueEvent ) {
|
|
TestEventManager->RegisterListener (&Listener, 1);
|
|
|
|
EventBasePtr event (new EventBase);
|
|
|
|
event->mEventType = 1;
|
|
event->mEventData = "test";
|
|
|
|
CHECK_EQUAL (true, TestEventManager->QueueEvent (event));
|
|
CHECK_EQUAL (1, TestEventManager->GetQueuedEventCount());
|
|
CHECK_EQUAL (true, TestEventManager->QueueEvent (event));
|
|
CHECK_EQUAL (2, TestEventManager->GetQueuedEventCount());
|
|
|
|
event->mEventType = 2;
|
|
CHECK_EQUAL (false, TestEventManager->QueueEvent (event));
|
|
}
|
|
|
|
TEST_FIXTURE ( EventsFixture, TestTestEventManagerProcess ) {
|
|
TestEventManager->RegisterListener (&Listener, 1);
|
|
|
|
EventBasePtr event (new EventBase);
|
|
|
|
event->mEventType = 1;
|
|
event->mEventData = "test";
|
|
|
|
CHECK_EQUAL (true, TestEventManager->QueueEvent (event));
|
|
CHECK_EQUAL (1, TestEventManager->GetQueuedEventCount());
|
|
CHECK_EQUAL (true, TestEventManager->QueueEvent (event));
|
|
CHECK_EQUAL (2, TestEventManager->GetQueuedEventCount());
|
|
|
|
TestEventManager->Process();
|
|
CHECK_EQUAL (1, global_event_type);
|
|
CHECK_EQUAL ("test", global_event_string);
|
|
CHECK_EQUAL (0, TestEventManager->GetQueuedEventCount());
|
|
}
|