1221abfb2Sejakowatz//------------------------------------------------------------------------------
2221abfb2Sejakowatz//	MessageDestructTest.cpp
3221abfb2Sejakowatz//
4221abfb2Sejakowatz//------------------------------------------------------------------------------
5221abfb2Sejakowatz
6221abfb2Sejakowatz// Standard Includes -----------------------------------------------------------
7221abfb2Sejakowatz
8221abfb2Sejakowatz// System Includes -------------------------------------------------------------
9221abfb2Sejakowatz#include <Looper.h>
10221abfb2Sejakowatz#include <Message.h>
11221abfb2Sejakowatz#include <Messenger.h>
12221abfb2Sejakowatz
13221abfb2Sejakowatz// Project Includes ------------------------------------------------------------
14221abfb2Sejakowatz
15221abfb2Sejakowatz// Local Includes --------------------------------------------------------------
16221abfb2Sejakowatz#include "MessageDestructTest.h"
17221abfb2Sejakowatz
18221abfb2Sejakowatz// Local Defines ---------------------------------------------------------------
19221abfb2Sejakowatz
20221abfb2Sejakowatz// Globals ---------------------------------------------------------------------
21221abfb2Sejakowatz
22221abfb2Sejakowatz//------------------------------------------------------------------------------
23221abfb2Sejakowatz/**
24221abfb2Sejakowatz	~BMessage
25221abfb2Sejakowatz	@case			no reply to sent message
26221abfb2Sejakowatz	@results		B_NO_REPLY reply is received
27221abfb2Sejakowatz */
28221abfb2Sejakowatzclass Looper1 : public BLooper
29221abfb2Sejakowatz{
30221abfb2Sejakowatz	public:
31221abfb2Sejakowatz		Looper1(const char* name) : BLooper(name) {;}
32221abfb2Sejakowatz
33221abfb2Sejakowatz		void MessageReceived(BMessage* msg)
34221abfb2Sejakowatz		{
35221abfb2Sejakowatz			switch (msg->what)
36221abfb2Sejakowatz			{
37221abfb2Sejakowatz				case '1234':
38221abfb2Sejakowatz					break;
39221abfb2Sejakowatz				case '2345':
40221abfb2Sejakowatz					msg->SendReply('3456');
41221abfb2Sejakowatz					break;
42221abfb2Sejakowatz				default:
43221abfb2Sejakowatz					BLooper::MessageReceived(msg);
44221abfb2Sejakowatz			}
45221abfb2Sejakowatz		}
46221abfb2Sejakowatz};
47221abfb2Sejakowatz
48221abfb2Sejakowatzvoid TMessageDestructTest::MessageDestructTest1()
49221abfb2Sejakowatz{
50221abfb2Sejakowatz	BLooper* looper1 = new Looper1("looper1");
51221abfb2Sejakowatz
52221abfb2Sejakowatz	looper1->Run();
53221abfb2Sejakowatz
54221abfb2Sejakowatz	BMessenger msgr(NULL, looper1);
55221abfb2Sejakowatz	BMessage reply;
56221abfb2Sejakowatz	CPPUNIT_ASSERT(msgr.SendMessage('1234', &reply) == B_OK);
57221abfb2Sejakowatz	CPPUNIT_ASSERT(reply.what == B_NO_REPLY);
58221abfb2Sejakowatz
59221abfb2Sejakowatz	looper1->Lock();
60221abfb2Sejakowatz	looper1->Quit();
61221abfb2Sejakowatz}
62221abfb2Sejakowatz//------------------------------------------------------------------------------
63221abfb2Sejakowatz/**
64221abfb2Sejakowatz	~BMessage
65221abfb2Sejakowatz	@case			Reply is sent to message
66221abfb2Sejakowatz	@result			No B_NO_REPLY reply is sent
67221abfb2Sejakowatz */
68221abfb2Sejakowatzvoid TMessageDestructTest::MessageDestructTest2()
69221abfb2Sejakowatz{
70221abfb2Sejakowatz	BLooper* looper1 = new Looper1("looper1");
71221abfb2Sejakowatz	looper1->Run();
72221abfb2Sejakowatz
73221abfb2Sejakowatz	BMessenger msgr(NULL, looper1);
74221abfb2Sejakowatz	BMessage reply;
75221abfb2Sejakowatz	CPPUNIT_ASSERT(msgr.SendMessage('2345', &reply) == B_OK);
76221abfb2Sejakowatz	CPPUNIT_ASSERT(reply.what == '3456');
77221abfb2Sejakowatz
78221abfb2Sejakowatz	looper1->Lock();
79221abfb2Sejakowatz	looper1->Quit();
80221abfb2Sejakowatz}
81221abfb2Sejakowatz//------------------------------------------------------------------------------
82221abfb2SejakowatzTestSuite* TMessageDestructTest::Suite()
83221abfb2Sejakowatz{
84221abfb2Sejakowatz	TestSuite* suite = new TestSuite("BMessage::~BMessage()");
85221abfb2Sejakowatz
86221abfb2Sejakowatz	ADD_TEST4(BMessage, suite, TMessageDestructTest, MessageDestructTest1);
87221abfb2Sejakowatz	ADD_TEST4(BMessage, suite, TMessageDestructTest, MessageDestructTest2);
88221abfb2Sejakowatz
89221abfb2Sejakowatz	return suite;
90221abfb2Sejakowatz}
91221abfb2Sejakowatz//------------------------------------------------------------------------------
92221abfb2Sejakowatz
93221abfb2Sejakowatz
94221abfb2Sejakowatz/*
95221abfb2Sejakowatz * $Log $
96221abfb2Sejakowatz *
97221abfb2Sejakowatz * $Id  $
98221abfb2Sejakowatz *
99221abfb2Sejakowatz */
100221abfb2Sejakowatz
101