diff --git a/src/tests/kits/app/messaging/HandlerLooperMessageTest.cpp b/src/tests/kits/app/messaging/HandlerLooperMessageTest.cpp new file mode 100644 index 0000000000..1a84b666c2 --- /dev/null +++ b/src/tests/kits/app/messaging/HandlerLooperMessageTest.cpp @@ -0,0 +1,79 @@ +#include +#include +#include + +#include + +const int32 kMessage = 'MeXX'; + +class Looper : public BLooper { +public: + Looper(); + virtual void MessageReceived(BMessage *message); +}; + + +class Handler : public BHandler { +public: + Handler(); + virtual void MessageReceived(BMessage *message); +}; + +int main() +{ + Looper *looper = new Looper(); + Handler *handler = new Handler(); + looper->AddHandler(new Handler()); + looper->AddHandler(new Handler()); + looper->AddHandler(handler); + looper->AddHandler(new Handler()); + looper->AddHandler(new Handler()); + + looper->Run(); + + looper->PostMessage(new BMessage(kMessage), handler); + + snooze(1000000); + + looper->Lock(); + looper->Quit(); +} + + +Looper::Looper() + : + BLooper("looper") +{ +} + + +void +Looper::MessageReceived(BMessage *message) +{ + switch (message->what) { + case kMessage: + printf("Message received by Looper\n"); + break; + default: + BLooper::MessageReceived(message); + break; + } +} + + +Handler::Handler() + : + BHandler("handler") +{ +} + + +void +Handler::MessageReceived(BMessage *message) +{ + switch (message->what) { + default: + BHandler::MessageReceived(message); + break; + } +} diff --git a/src/tests/kits/app/messaging/Jamfile b/src/tests/kits/app/messaging/Jamfile index 80c16ae306..3c2cc47280 100644 --- a/src/tests/kits/app/messaging/Jamfile +++ b/src/tests/kits/app/messaging/Jamfile @@ -23,3 +23,8 @@ SEARCH on [ FGristFiles PortLink.cpp LinkReceiver.cpp LinkSender.cpp ] SEARCH on [ FGristFiles Shape.cpp Region.cpp RegionSupport.cpp ] = [ FDirName $(HAIKU_TOP) src kits interface ] ; + +SimpleTest HandlerLooperMessageTest : + HandlerLooperMessageTest.cpp + : be $(TARGET_LIBSTDC++) + ;