1// MessageRunnerTestHelpers.h 2 3#ifndef MESSAGE_RUNNER_TEST_HELPERS_H 4#define MESSAGE_RUNNER_TEST_HELPERS_H 5 6#include <Application.h> 7#include <List.h> 8 9enum { 10 MSG_RUNNER_MESSAGE = 'rmsg', 11 MSG_REPLY = 'rply', 12}; 13 14// MessageRunnerTestHandler 15class MessageRunnerTestHandler : public BHandler { 16public: 17 MessageRunnerTestHandler(); 18 ~MessageRunnerTestHandler(); 19 20 virtual void MessageReceived(BMessage *message); 21 22 int32 CountReplies() const { return fReplyCount; } 23 24private: 25 int32 fReplyCount; 26}; 27 28// MessageRunnerTestLooper 29class MessageRunnerTestLooper : public BLooper { 30public: 31 MessageRunnerTestLooper(); 32 ~MessageRunnerTestLooper(); 33 34 virtual void MessageReceived(BMessage *message); 35 36 bool CheckMessages(bigtime_t startTime, bigtime_t interval, int32 count); 37 bool CheckMessages(int32 skip, bigtime_t startTime, bigtime_t interval, 38 int32 count); 39 40private: 41 struct MessageInfo; 42 43private: 44 MessageInfo *MessageInfoAt(int32 index) const; 45 46private: 47 BList fMessageInfos; 48}; 49 50// MessageRunnerTestApp 51class MessageRunnerTestApp : public BApplication { 52public: 53 MessageRunnerTestApp(const char *signature); 54 ~MessageRunnerTestApp(); 55 56 virtual void MessageReceived(BMessage *message); 57 virtual bool QuitRequested(); 58 59 int32 CountReplies() const { return fReplyCount; } 60 61 MessageRunnerTestLooper *TestLooper() const { return fLooper; } 62 MessageRunnerTestHandler *TestHandler() const { return fHandler; } 63 64private: 65 static int32 _ThreadEntry(void *data); 66 67private: 68 thread_id fThread; 69 int32 fReplyCount; 70 MessageRunnerTestLooper *fLooper; 71 MessageRunnerTestHandler *fHandler; 72}; 73 74#endif // MESSAGE_RUNNER_TEST_HELPERS_H 75