2002-07-09 12:24:59 +00:00
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
// IsMessageWaitingTest.cpp
|
|
|
|
|
//
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
// Standard Includes -----------------------------------------------------------
|
2002-07-11 15:49:01 +00:00
|
|
|
#include <iostream>
|
2002-07-09 12:24:59 +00:00
|
|
|
|
|
|
|
|
// System Includes -------------------------------------------------------------
|
2002-07-11 00:04:38 +00:00
|
|
|
#include <Looper.h>
|
|
|
|
|
#include <MessageQueue.h>
|
2002-07-09 12:24:59 +00:00
|
|
|
|
|
|
|
|
// Project Includes ------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
// Local Includes --------------------------------------------------------------
|
|
|
|
|
#include "IsMessageWaitingTest.h"
|
|
|
|
|
|
|
|
|
|
// Local Defines ---------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
// Globals ---------------------------------------------------------------------
|
2002-07-11 15:49:01 +00:00
|
|
|
port_id _get_looper_port_(const BLooper* looper);
|
2002-07-09 12:24:59 +00:00
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
//case 1: looper is unlocked and queue is empty
|
|
|
|
|
void TIsMessageWaitingTest::IsMessageWaiting1()
|
|
|
|
|
{
|
|
|
|
|
BLooper Looper;
|
2002-07-11 15:49:01 +00:00
|
|
|
#ifndef TEST_R5
|
2002-07-09 12:24:59 +00:00
|
|
|
assert(!Looper.IsMessageWaiting());
|
2002-07-11 15:49:01 +00:00
|
|
|
#else
|
|
|
|
|
assert(Looper.IsMessageWaiting());
|
|
|
|
|
#endif
|
2002-07-09 12:24:59 +00:00
|
|
|
}
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
//case 2: looper is unlocked and queue is filled
|
|
|
|
|
void TIsMessageWaitingTest::IsMessageWaiting2()
|
|
|
|
|
{
|
|
|
|
|
BLooper Looper;
|
|
|
|
|
Looper.PostMessage('1234');
|
|
|
|
|
assert(Looper.IsMessageWaiting());
|
|
|
|
|
}
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
//case 3: looper is locked and queue is empty
|
|
|
|
|
void TIsMessageWaitingTest::IsMessageWaiting3()
|
|
|
|
|
{
|
|
|
|
|
BLooper Looper;
|
|
|
|
|
Looper.Lock();
|
2002-07-11 15:49:01 +00:00
|
|
|
#ifndef TEST_R5
|
2002-07-09 12:24:59 +00:00
|
|
|
assert(!Looper.IsMessageWaiting());
|
2002-07-11 15:49:01 +00:00
|
|
|
#else
|
|
|
|
|
assert(Looper.IsMessageWaiting());
|
|
|
|
|
#endif
|
2002-07-09 12:24:59 +00:00
|
|
|
}
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
//case 4: looper is locked and queue is filled
|
|
|
|
|
void TIsMessageWaitingTest::IsMessageWaiting4()
|
|
|
|
|
{
|
|
|
|
|
BLooper Looper;
|
|
|
|
|
Looper.Lock();
|
|
|
|
|
Looper.PostMessage('1234');
|
|
|
|
|
assert(Looper.IsMessageWaiting());
|
|
|
|
|
}
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
//case 5: looper is locked, message is posted, queue is empty
|
|
|
|
|
void TIsMessageWaitingTest::IsMessageWaiting5()
|
|
|
|
|
{
|
|
|
|
|
BLooper* Looper = new BLooper(__PRETTY_FUNCTION__);
|
|
|
|
|
Looper->Run();
|
|
|
|
|
|
|
|
|
|
// Prevent a port read
|
|
|
|
|
Looper->Lock();
|
|
|
|
|
Looper->PostMessage('1234');
|
|
|
|
|
assert(Looper->MessageQueue()->IsEmpty());
|
|
|
|
|
assert(Looper->IsMessageWaiting());
|
|
|
|
|
}
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
Test* TIsMessageWaitingTest::Suite()
|
|
|
|
|
{
|
|
|
|
|
TestSuite* suite = new TestSuite("BLooper::IsMessageWaiting()");
|
|
|
|
|
|
|
|
|
|
ADD_TEST(suite, TIsMessageWaitingTest, IsMessageWaiting1);
|
|
|
|
|
ADD_TEST(suite, TIsMessageWaitingTest, IsMessageWaiting2);
|
|
|
|
|
ADD_TEST(suite, TIsMessageWaitingTest, IsMessageWaiting3);
|
|
|
|
|
ADD_TEST(suite, TIsMessageWaitingTest, IsMessageWaiting4);
|
|
|
|
|
ADD_TEST(suite, TIsMessageWaitingTest, IsMessageWaiting5);
|
|
|
|
|
|
|
|
|
|
return suite;
|
|
|
|
|
}
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* $Log $
|
|
|
|
|
*
|
|
|
|
|
* $Id $
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|