diff --git a/src/tests/kits/app/bmessenger/ForwardMessageTest.cpp b/src/tests/kits/app/bmessenger/ForwardMessageTest.cpp new file mode 100644 index 0000000000..0240e0a1d0 --- /dev/null +++ b/src/tests/kits/app/bmessenger/ForwardMessageTest.cpp @@ -0,0 +1,55 @@ +#include +#include +#include + +class MyLooper : public BLooper +{ +public: + MyLooper(BLooper *looper) : BLooper("test") { + printf("Looper created\n"); + fLooper = looper; + }; + + virtual void MessageReceived(BMessage *msg) { + printf("MessageReceived : %.4s\n", (char*)&msg->what); + switch (msg->what) { + case 'toto': + if (fLooper) { + BMessenger(fLooper).SendMessage(msg); + break; + } + msg->SendReply('couc'); + break; + default: + BLooper::MessageReceived(msg); + } + }; + + BLooper *fLooper; +}; + +class App : public BApplication +{ +public: + App() : BApplication("application/test") { + + }; + virtual void ReadyToRun() { + MyLooper looper2(NULL); + looper2.Run(); + MyLooper looper1(&looper2); + looper1.Run(); + printf("loopers run\n"); + BMessage reply; + BMessenger(&looper1).SendMessage('toto', &reply); + printf("message sent and replied\ncheck there is only a 'couc' what in the reply\n"); + reply.PrintToStream(); + exit(0); + }; + +}; + +int main() +{ + App().Run(); +} diff --git a/src/tests/kits/app/bmessenger/Jamfile b/src/tests/kits/app/bmessenger/Jamfile index 0701738df2..9815e4411d 100644 --- a/src/tests/kits/app/bmessenger/Jamfile +++ b/src/tests/kits/app/bmessenger/Jamfile @@ -9,4 +9,9 @@ UnitTest SMRemoteTargetApp : be $(TARGET_LIBSTDC++) ; +SimpleTest ForwardMessageTest : + ForwardMessageTest.cpp + : be + ; + SubInclude HAIKU_TOP src tests kits app bmessenger testapps ;