Files
haiku-beta6/src/tests/kits/app/blooper/IsMessageWaitingTest.cpp
T

98 lines
3.0 KiB
C++
Raw Normal View History

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 -------------------------------------------------------------
#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 $
*
*/