Tweaks to deal with new repository hierarchy and use of unified CppUnit;
some bug fixes and a couple of new tests for BLooper. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@242 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -46,6 +46,9 @@
|
|||||||
|
|
||||||
class BMessage;
|
class BMessage;
|
||||||
class BMessageQueue;
|
class BMessageQueue;
|
||||||
|
namespace BPrivate {
|
||||||
|
class BLooperList;
|
||||||
|
}
|
||||||
struct _loop_data_;
|
struct _loop_data_;
|
||||||
|
|
||||||
// Port (Message Queue) Capacity -----------------------------------------------
|
// Port (Message Queue) Capacity -----------------------------------------------
|
||||||
@@ -138,6 +141,7 @@ private:
|
|||||||
friend class BMessenger;
|
friend class BMessenger;
|
||||||
friend class BView;
|
friend class BView;
|
||||||
friend class BHandler;
|
friend class BHandler;
|
||||||
|
friend class BPrivate::BLooperList;
|
||||||
friend port_id _get_looper_port_(const BLooper* );
|
friend port_id _get_looper_port_(const BLooper* );
|
||||||
friend status_t _safe_get_server_token_(const BLooper* , int32* );
|
friend status_t _safe_get_server_token_(const BLooper* , int32* );
|
||||||
friend team_id _find_cur_team_id_();
|
friend team_id _find_cur_team_id_();
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ include $(SUBDIR)/support/support.src ;
|
|||||||
|
|
||||||
UsePrivateHeaders app ;
|
UsePrivateHeaders app ;
|
||||||
UsePrivateHeaders interface ;
|
UsePrivateHeaders interface ;
|
||||||
|
UsePrivateHeaders shared ;
|
||||||
UsePrivateHeaders support ;
|
UsePrivateHeaders support ;
|
||||||
|
|
||||||
UsePublicHeaders app ;
|
UsePublicHeaders app ;
|
||||||
|
|||||||
@@ -380,14 +380,6 @@ const char* BHandler::Name() const
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
void BHandler::SetNextHandler(BHandler* handler)
|
void BHandler::SetNextHandler(BHandler* handler)
|
||||||
{
|
{
|
||||||
// NOTE: This is called by BLooper::RemoveHandler() with NULL as the param,
|
|
||||||
// so we need to handle that possiblity.
|
|
||||||
if (!handler)
|
|
||||||
{
|
|
||||||
fNextHandler = NULL;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!fLooper)
|
if (!fLooper)
|
||||||
{
|
{
|
||||||
debugger("handler must belong to looper before setting NextHandler");
|
debugger("handler must belong to looper before setting NextHandler");
|
||||||
@@ -395,20 +387,16 @@ void BHandler::SetNextHandler(BHandler* handler)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fLooper != handler->Looper())
|
if (!fLooper->IsLocked())
|
||||||
{
|
{
|
||||||
debugger("The handler and its NextHandler must have the same looper");
|
debugger("The handler's looper must be locked before setting NextHandler");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fLooper->IsLocked())
|
if (handler && fLooper != handler->Looper())
|
||||||
{
|
{
|
||||||
//debugger("Owning Looper must be locked before calling SetNextHandler");
|
debugger("The handler and its NextHandler must have the same looper");
|
||||||
// NOTE: Original implementation allows setting the next handler here
|
return;
|
||||||
// anyway. The documentation *clearly* says otherwise. Can we get away
|
|
||||||
// with being more strict?
|
|
||||||
|
|
||||||
// return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: I'm sure some sort of threading protection should happen here,
|
// NOTE: I'm sure some sort of threading protection should happen here,
|
||||||
|
|||||||
+92
-8
@@ -55,7 +55,9 @@
|
|||||||
// Project Includes ------------------------------------------------------------
|
// Project Includes ------------------------------------------------------------
|
||||||
|
|
||||||
// Local Includes --------------------------------------------------------------
|
// Local Includes --------------------------------------------------------------
|
||||||
#include "TokenSpace.h"
|
#include <LooperList.h>
|
||||||
|
#include <ObjectLocker.h>
|
||||||
|
#include <TokenSpace.h>
|
||||||
|
|
||||||
// Local Defines ---------------------------------------------------------------
|
// Local Defines ---------------------------------------------------------------
|
||||||
#define FILTER_LIST_BLOCK_SIZE 5
|
#define FILTER_LIST_BLOCK_SIZE 5
|
||||||
@@ -63,6 +65,9 @@
|
|||||||
|
|
||||||
// Globals ---------------------------------------------------------------------
|
// Globals ---------------------------------------------------------------------
|
||||||
using BPrivate::gDefaultTokens;
|
using BPrivate::gDefaultTokens;
|
||||||
|
using BPrivate::gLooperList;
|
||||||
|
using BPrivate::BObjectLocker;
|
||||||
|
using BPrivate::BLooperList;
|
||||||
|
|
||||||
typedef bool (*find_loop_pred)(_loop_data_* data, void* data);
|
typedef bool (*find_loop_pred)(_loop_data_* data, void* data);
|
||||||
_loop_data_* find_loop_data(_loop_data_* begin, _loop_data_* end,
|
_loop_data_* find_loop_data(_loop_data_* begin, _loop_data_* end,
|
||||||
@@ -104,19 +109,23 @@ BLooper::BLooper(const char* name, int32 priority, int32 port_capacity)
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
BLooper::~BLooper()
|
BLooper::~BLooper()
|
||||||
{
|
{
|
||||||
|
Lock();
|
||||||
kill_thread(fTaskID);
|
kill_thread(fTaskID);
|
||||||
delete fQueue;
|
delete fQueue;
|
||||||
delete_sem(fLockSem);
|
delete_sem(fLockSem);
|
||||||
delete_port(fMsgPort);
|
delete_port(fMsgPort);
|
||||||
|
|
||||||
UnlockFully();
|
|
||||||
|
|
||||||
// Clean up our filters
|
// Clean up our filters
|
||||||
SetCommonFilterList(NULL);
|
SetCommonFilterList(NULL);
|
||||||
|
|
||||||
|
BObjectLocker<BLooperList> ListLock(gLooperList);
|
||||||
|
#if 0
|
||||||
BAutolock ListLock(sLooperListLock);
|
BAutolock ListLock(sLooperListLock);
|
||||||
|
#endif
|
||||||
RemoveHandler(this);
|
RemoveHandler(this);
|
||||||
RemoveLooper(this);
|
RemoveLooper(this);
|
||||||
|
|
||||||
|
UnlockFully();
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
BLooper::BLooper(BMessage* data)
|
BLooper::BLooper(BMessage* data)
|
||||||
@@ -263,7 +272,8 @@ bool BLooper::IsMessageWaiting() const
|
|||||||
if (!IsLocked())
|
if (!IsLocked())
|
||||||
{
|
{
|
||||||
// TODO: test
|
// TODO: test
|
||||||
debugger("");
|
debugger("The Looper must be locked before calling IsMsgWaiting");
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fQueue->IsEmpty())
|
if (!fQueue->IsEmpty())
|
||||||
@@ -271,6 +281,14 @@ bool BLooper::IsMessageWaiting() const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@note: What we're doing here differs slightly from the R5 implementation.
|
||||||
|
It appears that they probably return count != 0, which gives a false
|
||||||
|
true (!) result when port_buffer_size_etc() would block -- which
|
||||||
|
indicates that the port's buffer is empty, so we should return false.
|
||||||
|
Since we don't actually care about what the error is, we just return
|
||||||
|
count > 0.
|
||||||
|
*/
|
||||||
int32 count;
|
int32 count;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@@ -302,9 +320,19 @@ void BLooper::AddHandler(BHandler* handler)
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
bool BLooper::RemoveHandler(BHandler* handler)
|
bool BLooper::RemoveHandler(BHandler* handler)
|
||||||
{
|
{
|
||||||
// BeBook says looper must be locked for calls to this, but testing shows that
|
// R5 implementation didn't bother to check its params, thus NULL handlers
|
||||||
// just ain't so.
|
// will seg fault. Bad form, you know.
|
||||||
// AssertLocked();
|
if (!handler)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Correction; testing shows the looper *does* need to be locked for this;
|
||||||
|
// it just doesn't use AssertLocked() for that.
|
||||||
|
if (!IsLocked())
|
||||||
|
{
|
||||||
|
debugger("Looper must be locked before calling RemoveHandler.");
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: test
|
// TODO: test
|
||||||
// Need to ensure this algo reflects what actually happens
|
// Need to ensure this algo reflects what actually happens
|
||||||
@@ -516,7 +544,10 @@ bool BLooper::IsLocked() const
|
|||||||
{
|
{
|
||||||
// We have to lock the list for the call to IsLooperValid(). Has the side
|
// We have to lock the list for the call to IsLooperValid(). Has the side
|
||||||
// effect of not letting the looper get deleted while we're here.
|
// effect of not letting the looper get deleted while we're here.
|
||||||
|
BObjectLocker<BLooperList> ListLock(gLooperList);
|
||||||
|
#if 0
|
||||||
BAutolock ListLock(sLooperListLock);
|
BAutolock ListLock(sLooperListLock);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!ListLock.IsLocked())
|
if (!ListLock.IsLocked())
|
||||||
{
|
{
|
||||||
@@ -551,6 +582,12 @@ team_id BLooper::Team() const
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
BLooper* BLooper::LooperForThread(thread_id tid)
|
BLooper* BLooper::LooperForThread(thread_id tid)
|
||||||
{
|
{
|
||||||
|
BObjectLocker<BLooperList> ListLock (gLooperList);
|
||||||
|
if (ListLock.IsLocked())
|
||||||
|
{
|
||||||
|
return gLooperList.LooperForThread(tid);
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
BAutolock ListLock(sLooperListLock);
|
BAutolock ListLock(sLooperListLock);
|
||||||
if (ListLock.IsLocked())
|
if (ListLock.IsLocked())
|
||||||
{
|
{
|
||||||
@@ -564,6 +601,7 @@ BLooper* BLooper::LooperForThread(thread_id tid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
thread_id BLooper::LockingThread() const
|
thread_id BLooper::LockingThread() const
|
||||||
@@ -715,7 +753,10 @@ BLooper::BLooper(int32 priority, port_id port, const char* name)
|
|||||||
status_t BLooper::_PostMessage(BMessage* msg, BHandler* handler,
|
status_t BLooper::_PostMessage(BMessage* msg, BHandler* handler,
|
||||||
BHandler* reply_to)
|
BHandler* reply_to)
|
||||||
{
|
{
|
||||||
|
BObjectLocker<BLooperList> ListLock(gLooperList);
|
||||||
|
#if 0
|
||||||
BAutolock ListLock(sLooperListLock);
|
BAutolock ListLock(sLooperListLock);
|
||||||
|
#endif
|
||||||
if (!ListLock.IsLocked())
|
if (!ListLock.IsLocked())
|
||||||
{
|
{
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
@@ -788,7 +829,10 @@ DBG(OUT("BLooper::_Lock() done 1\n"));
|
|||||||
well to remove itself).
|
well to remove itself).
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
|
BObjectLocker<BLooperList> ListLock(gLooperList);
|
||||||
|
#if 0
|
||||||
BAutolock ListLock(sLooperListLock);
|
BAutolock ListLock(sLooperListLock);
|
||||||
|
#endif
|
||||||
if (!ListLock.IsLocked())
|
if (!ListLock.IsLocked())
|
||||||
{
|
{
|
||||||
// If we can't lock, the semaphore is probably
|
// If we can't lock, the semaphore is probably
|
||||||
@@ -911,8 +955,11 @@ void BLooper::InitData(const char* name, int32 priority, int32 port_capacity)
|
|||||||
fMsgPort = create_port(port_capacity, name ? name : "LooperPort");
|
fMsgPort = create_port(port_capacity, name ? name : "LooperPort");
|
||||||
|
|
||||||
fInitPriority = priority;
|
fInitPriority = priority;
|
||||||
|
|
||||||
|
BObjectLocker<BLooperList> ListLock(gLooperList);
|
||||||
|
#if 0
|
||||||
BAutolock ListLock(sLooperListLock);
|
BAutolock ListLock(sLooperListLock);
|
||||||
|
#endif
|
||||||
AddLooper(this);
|
AddLooper(this);
|
||||||
AddHandler(this);
|
AddHandler(this);
|
||||||
}
|
}
|
||||||
@@ -1237,6 +1284,11 @@ void BLooper::UnlockFully()
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
void BLooper::AddLooper(BLooper* loop)
|
void BLooper::AddLooper(BLooper* loop)
|
||||||
{
|
{
|
||||||
|
if (gLooperList.IsLocked())
|
||||||
|
{
|
||||||
|
gLooperList.AddLooper(loop);
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
if (sLooperListLock.IsLocked())
|
if (sLooperListLock.IsLocked())
|
||||||
{
|
{
|
||||||
#if defined(CHECK_ADD_LOOPER)
|
#if defined(CHECK_ADD_LOOPER)
|
||||||
@@ -1293,10 +1345,16 @@ DBG(OUT("BLooper::AddLooper(): looper added at %ld\n", looperCount));
|
|||||||
{
|
{
|
||||||
debugger("sLooperList is not locked!");
|
debugger("sLooperList is not locked!");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
bool BLooper::IsLooperValid(const BLooper* l)
|
bool BLooper::IsLooperValid(const BLooper* l)
|
||||||
{
|
{
|
||||||
|
if (gLooperList.IsLocked())
|
||||||
|
{
|
||||||
|
return gLooperList.IsLooperValid(l);
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
if (sLooperListLock.IsLocked())
|
if (sLooperListLock.IsLocked())
|
||||||
{
|
{
|
||||||
return find_loop_data(sLooperList, sLooperList + sLooperCount,
|
return find_loop_data(sLooperList, sLooperList + sLooperCount,
|
||||||
@@ -1304,10 +1362,16 @@ bool BLooper::IsLooperValid(const BLooper* l)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
void BLooper::RemoveLooper(BLooper* l)
|
void BLooper::RemoveLooper(BLooper* l)
|
||||||
{
|
{
|
||||||
|
if (gLooperList.IsLocked())
|
||||||
|
{
|
||||||
|
gLooperList.RemoveLooper(l);
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
if (sLooperListLock.IsLocked())
|
if (sLooperListLock.IsLocked())
|
||||||
{
|
{
|
||||||
_loop_data_* result = find_loop_data(sLooperList,
|
_loop_data_* result = find_loop_data(sLooperList,
|
||||||
@@ -1327,20 +1391,33 @@ void BLooper::RemoveLooper(BLooper* l)
|
|||||||
sLooperListSize = 0;
|
sLooperListSize = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
void BLooper::GetLooperList(BList* list)
|
void BLooper::GetLooperList(BList* list)
|
||||||
{
|
{
|
||||||
|
BObjectLocker<BLooperList> ListLock(gLooperList);
|
||||||
|
if (ListLock.IsLocked())
|
||||||
|
{
|
||||||
|
gLooperList.GetLooperList(list);
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
BAutolock ListLock(sLooperListLock);
|
BAutolock ListLock(sLooperListLock);
|
||||||
if (ListLock.IsLocked())
|
if (ListLock.IsLocked())
|
||||||
{
|
{
|
||||||
find_loop_data(sLooperList, sLooperList + sLooperCount,
|
find_loop_data(sLooperList, sLooperList + sLooperCount,
|
||||||
copy_list_pred, (void*)list);
|
copy_list_pred, (void*)list);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
BLooper* BLooper::LooperForName(const char* name)
|
BLooper* BLooper::LooperForName(const char* name)
|
||||||
{
|
{
|
||||||
|
if (gLooperList.IsLocked())
|
||||||
|
{
|
||||||
|
return gLooperList.LooperForName(name);
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
if (sLooperListLock.IsLocked())
|
if (sLooperListLock.IsLocked())
|
||||||
{
|
{
|
||||||
_loop_data_* result = find_loop_data(sLooperList,
|
_loop_data_* result = find_loop_data(sLooperList,
|
||||||
@@ -1351,12 +1428,18 @@ BLooper* BLooper::LooperForName(const char* name)
|
|||||||
return result->looper;
|
return result->looper;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
BLooper* BLooper::LooperForPort(port_id port)
|
BLooper* BLooper::LooperForPort(port_id port)
|
||||||
{
|
{
|
||||||
|
if (gLooperList.IsLocked())
|
||||||
|
{
|
||||||
|
return gLooperList.LooperForPort(port);
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
if (sLooperListLock.IsLocked())
|
if (sLooperListLock.IsLocked())
|
||||||
{
|
{
|
||||||
_loop_data_* result = find_loop_data(sLooperList,
|
_loop_data_* result = find_loop_data(sLooperList,
|
||||||
@@ -1367,6 +1450,7 @@ BLooper* BLooper::LooperForPort(port_id port)
|
|||||||
return result->looper;
|
return result->looper;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ APP_KIT_SOURCE =
|
|||||||
Handler.cpp
|
Handler.cpp
|
||||||
Invoker.cpp
|
Invoker.cpp
|
||||||
Looper.cpp
|
Looper.cpp
|
||||||
|
LooperList.cpp
|
||||||
MessageFilter.cpp
|
MessageFilter.cpp
|
||||||
MessageQueue.cpp
|
MessageQueue.cpp
|
||||||
Messenger.cpp
|
Messenger.cpp
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
void TBHandlerTester::BHandler1()
|
void TBHandlerTester::BHandler1()
|
||||||
{
|
{
|
||||||
BHandler Handler((const char*)NULL);
|
BHandler Handler((const char*)NULL);
|
||||||
assert(Handler.Name() == NULL);
|
CPPUNIT_ASSERT(Handler.Name() == NULL);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -50,7 +50,7 @@ void TBHandlerTester::BHandler1()
|
|||||||
void TBHandlerTester::BHandler2()
|
void TBHandlerTester::BHandler2()
|
||||||
{
|
{
|
||||||
BHandler Handler("name");
|
BHandler Handler("name");
|
||||||
assert(string("name") == Handler.Name());
|
CPPUNIT_ASSERT(string("name") == Handler.Name());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -64,7 +64,7 @@ void TBHandlerTester::BHandler3()
|
|||||||
BMessage Archive;
|
BMessage Archive;
|
||||||
Archive.AddString("_name", "the name");
|
Archive.AddString("_name", "the name");
|
||||||
BHandler Handler(&Archive);
|
BHandler Handler(&Archive);
|
||||||
assert(string("the name") == Handler.Name());
|
CPPUNIT_ASSERT(string("the name") == Handler.Name());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -77,7 +77,7 @@ void TBHandlerTester::BHandler4()
|
|||||||
{
|
{
|
||||||
BMessage Archive;
|
BMessage Archive;
|
||||||
BHandler Handler(&Archive);
|
BHandler Handler(&Archive);
|
||||||
assert(Handler.Name() == NULL);
|
CPPUNIT_ASSERT(Handler.Name() == NULL);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -93,7 +93,7 @@ void TBHandlerTester::BHandler5()
|
|||||||
{
|
{
|
||||||
#if !defined(TEST_R5)
|
#if !defined(TEST_R5)
|
||||||
BHandler Handler((BMessage*)NULL);
|
BHandler Handler((BMessage*)NULL);
|
||||||
assert(Handler.Name() == NULL);
|
CPPUNIT_ASSERT(Handler.Name() == NULL);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@@ -110,7 +110,7 @@ void TBHandlerTester::Archive1()
|
|||||||
{
|
{
|
||||||
#if !defined(TEST_R5)
|
#if !defined(TEST_R5)
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
assert(Handler.Archive(NULL, false) == B_BAD_VALUE);
|
CPPUNIT_ASSERT(Handler.Archive(NULL, false) == B_BAD_VALUE);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@@ -127,7 +127,7 @@ void TBHandlerTester::Archive2()
|
|||||||
{
|
{
|
||||||
#if !defined(TEST_R5)
|
#if !defined(TEST_R5)
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
assert(Handler.Archive(NULL) == B_BAD_VALUE);
|
CPPUNIT_ASSERT(Handler.Archive(NULL) == B_BAD_VALUE);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@@ -146,13 +146,13 @@ void TBHandlerTester::Archive3()
|
|||||||
{
|
{
|
||||||
BMessage Archive;
|
BMessage Archive;
|
||||||
BHandler Handler("a name");
|
BHandler Handler("a name");
|
||||||
assert(Handler.Archive(&Archive, false) == B_OK);
|
CPPUNIT_ASSERT(Handler.Archive(&Archive, false) == B_OK);
|
||||||
|
|
||||||
const char* data;
|
const char* data;
|
||||||
assert(Archive.FindString("_name", &data) == B_OK);
|
CPPUNIT_ASSERT(Archive.FindString("_name", &data) == B_OK);
|
||||||
assert(string("a name") == data);
|
CPPUNIT_ASSERT(string("a name") == data);
|
||||||
assert(Archive.FindString("class", &data) == B_OK);
|
CPPUNIT_ASSERT(Archive.FindString("class", &data) == B_OK);
|
||||||
assert(string("BHandler") == data);
|
CPPUNIT_ASSERT(string("BHandler") == data);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -170,13 +170,13 @@ void TBHandlerTester::Archive4()
|
|||||||
{
|
{
|
||||||
BMessage Archive;
|
BMessage Archive;
|
||||||
BHandler Handler("another name");
|
BHandler Handler("another name");
|
||||||
assert(Handler.Archive(&Archive) == B_OK);
|
CPPUNIT_ASSERT(Handler.Archive(&Archive) == B_OK);
|
||||||
|
|
||||||
const char* data;
|
const char* data;
|
||||||
assert(Archive.FindString("_name", &data) == B_OK);
|
CPPUNIT_ASSERT(Archive.FindString("_name", &data) == B_OK);
|
||||||
assert(string("another name") == data);
|
CPPUNIT_ASSERT(string("another name") == data);
|
||||||
assert(Archive.FindString("class", &data) == B_OK);
|
CPPUNIT_ASSERT(Archive.FindString("class", &data) == B_OK);
|
||||||
assert(string("BHandler") == data);
|
CPPUNIT_ASSERT(string("BHandler") == data);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -190,8 +190,8 @@ void TBHandlerTester::Archive4()
|
|||||||
void TBHandlerTester::Instantiate1()
|
void TBHandlerTester::Instantiate1()
|
||||||
{
|
{
|
||||||
#if !defined(TEST_R5)
|
#if !defined(TEST_R5)
|
||||||
assert(BHandler::Instantiate(NULL) == NULL);
|
CPPUNIT_ASSERT(BHandler::Instantiate(NULL) == NULL);
|
||||||
assert(errno == B_BAD_VALUE);
|
CPPUNIT_ASSERT(errno == B_BAD_VALUE);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@@ -211,9 +211,9 @@ void TBHandlerTester::Instantiate2()
|
|||||||
|
|
||||||
BHandler* Handler =
|
BHandler* Handler =
|
||||||
dynamic_cast<BHandler*>(BHandler::Instantiate(&Archive));
|
dynamic_cast<BHandler*>(BHandler::Instantiate(&Archive));
|
||||||
assert(Handler != NULL);
|
CPPUNIT_ASSERT(Handler != NULL);
|
||||||
assert(string("a name") == Handler->Name());
|
CPPUNIT_ASSERT(string("a name") == Handler->Name());
|
||||||
assert(errno == B_OK);
|
CPPUNIT_ASSERT(errno == B_OK);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -231,9 +231,9 @@ void TBHandlerTester::Instantiate3()
|
|||||||
|
|
||||||
BHandler* Handler =
|
BHandler* Handler =
|
||||||
dynamic_cast<BHandler*>(BHandler::Instantiate(&Archive));
|
dynamic_cast<BHandler*>(BHandler::Instantiate(&Archive));
|
||||||
assert(Handler != NULL);
|
CPPUNIT_ASSERT(Handler != NULL);
|
||||||
assert(Handler->Name() == NULL);
|
CPPUNIT_ASSERT(Handler->Name() == NULL);
|
||||||
assert(errno == B_OK);
|
CPPUNIT_ASSERT(errno == B_OK);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -247,10 +247,10 @@ void TBHandlerTester::Instantiate3()
|
|||||||
void TBHandlerTester::SetName1()
|
void TBHandlerTester::SetName1()
|
||||||
{
|
{
|
||||||
BHandler Handler("a name");
|
BHandler Handler("a name");
|
||||||
assert(string("a name") == Handler.Name());
|
CPPUNIT_ASSERT(string("a name") == Handler.Name());
|
||||||
|
|
||||||
Handler.SetName(NULL);
|
Handler.SetName(NULL);
|
||||||
assert(Handler.Name() == NULL);
|
CPPUNIT_ASSERT(Handler.Name() == NULL);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -263,10 +263,10 @@ void TBHandlerTester::SetName1()
|
|||||||
void TBHandlerTester::SetName2()
|
void TBHandlerTester::SetName2()
|
||||||
{
|
{
|
||||||
BHandler Handler("a name");
|
BHandler Handler("a name");
|
||||||
assert(string("a name") == Handler.Name());
|
CPPUNIT_ASSERT(string("a name") == Handler.Name());
|
||||||
|
|
||||||
Handler.SetName("another name");
|
Handler.SetName("another name");
|
||||||
assert(string("another name") == Handler.Name());
|
CPPUNIT_ASSERT(string("another name") == Handler.Name());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -279,7 +279,7 @@ void TBHandlerTester::SetName2()
|
|||||||
void TBHandlerTester::Perform1()
|
void TBHandlerTester::Perform1()
|
||||||
{
|
{
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
assert(Handler.Perform(0, NULL) == B_ERROR);
|
CPPUNIT_ASSERT(Handler.Perform(0, NULL) == B_ERROR);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -290,7 +290,7 @@ void TBHandlerTester::Perform1()
|
|||||||
void TBHandlerTester::FilterList1()
|
void TBHandlerTester::FilterList1()
|
||||||
{
|
{
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
assert(!Handler.FilterList());
|
CPPUNIT_ASSERT(!Handler.FilterList());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
Test* TBHandlerTester::Suite()
|
Test* TBHandlerTester::Suite()
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
void TIsWatchedTest::IsWatched1()
|
void TIsWatchedTest::IsWatched1()
|
||||||
{
|
{
|
||||||
assert(!fHandler.IsWatched());
|
CPPUNIT_ASSERT(!fHandler.IsWatched());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -39,11 +39,11 @@ void TIsWatchedTest::IsWatched2()
|
|||||||
{
|
{
|
||||||
BHandler Watcher;
|
BHandler Watcher;
|
||||||
fHandler.StartWatching(&Watcher, '1234');
|
fHandler.StartWatching(&Watcher, '1234');
|
||||||
assert(fHandler.IsWatched() == true);
|
CPPUNIT_ASSERT(fHandler.IsWatched() == true);
|
||||||
|
|
||||||
fHandler.StopWatching(&Watcher, '1234');
|
fHandler.StopWatching(&Watcher, '1234');
|
||||||
#ifndef TEST_R5
|
#ifndef TEST_R5
|
||||||
assert(fHandler.IsWatched() == false);
|
CPPUNIT_ASSERT(fHandler.IsWatched() == false);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
void TLockLooperTest::LockLooper1()
|
void TLockLooperTest::LockLooper1()
|
||||||
{
|
{
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
assert(!Handler.LockLooper());
|
CPPUNIT_ASSERT(!Handler.LockLooper());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -45,7 +45,7 @@ void TLockLooperTest::LockLooper2()
|
|||||||
// Make sure the looper is unlocked
|
// Make sure the looper is unlocked
|
||||||
Looper.Unlock();
|
Looper.Unlock();
|
||||||
}
|
}
|
||||||
assert(Handler.LockLooper());
|
CPPUNIT_ASSERT(Handler.LockLooper());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -59,7 +59,7 @@ void TLockLooperTest::LockLooper3()
|
|||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
Looper.AddHandler(&Handler);
|
Looper.AddHandler(&Handler);
|
||||||
Looper.Lock();
|
Looper.Lock();
|
||||||
assert(Handler.LockLooper());
|
CPPUNIT_ASSERT(Handler.LockLooper());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -83,7 +83,7 @@ void TLockLooperTest::LockLooper4()
|
|||||||
resume_thread(tid);
|
resume_thread(tid);
|
||||||
info.LockTest();
|
info.LockTest();
|
||||||
|
|
||||||
assert(!Handler.LockLooper());
|
CPPUNIT_ASSERT(!Handler.LockLooper());
|
||||||
info.UnlockThread();
|
info.UnlockThread();
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
void TLockLooperWithTimeoutTest::LockLooperWithTimeout1()
|
void TLockLooperWithTimeoutTest::LockLooperWithTimeout1()
|
||||||
{
|
{
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
assert(Handler.LockLooperWithTimeout(10000) == B_BAD_VALUE);
|
CPPUNIT_ASSERT(Handler.LockLooperWithTimeout(10000) == B_BAD_VALUE);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -47,7 +47,7 @@ void TLockLooperWithTimeoutTest::LockLooperWithTimeout2()
|
|||||||
// Make sure the looper is unlocked
|
// Make sure the looper is unlocked
|
||||||
Looper.Unlock();
|
Looper.Unlock();
|
||||||
}
|
}
|
||||||
assert(Handler.LockLooperWithTimeout(10000) == B_OK);
|
CPPUNIT_ASSERT(Handler.LockLooperWithTimeout(10000) == B_OK);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -62,7 +62,7 @@ void TLockLooperWithTimeoutTest::LockLooperWithTimeout3()
|
|||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
Looper.AddHandler(&Handler);
|
Looper.AddHandler(&Handler);
|
||||||
Looper.Lock();
|
Looper.Lock();
|
||||||
assert(Handler.LockLooperWithTimeout(10000) == B_OK);
|
CPPUNIT_ASSERT(Handler.LockLooperWithTimeout(10000) == B_OK);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -87,7 +87,7 @@ void TLockLooperWithTimeoutTest::LockLooperWithTimeout4()
|
|||||||
resume_thread(tid);
|
resume_thread(tid);
|
||||||
info.LockTest();
|
info.LockTest();
|
||||||
|
|
||||||
assert(Handler.LockLooperWithTimeout(10000) == B_TIMED_OUT);
|
CPPUNIT_ASSERT(Handler.LockLooperWithTimeout(10000) == B_TIMED_OUT);
|
||||||
info.UnlockThread();
|
info.UnlockThread();
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
*/
|
*/
|
||||||
void TLooperTest::LooperTest1()
|
void TLooperTest::LooperTest1()
|
||||||
{
|
{
|
||||||
assert(fHandler.Looper() == NULL);
|
CPPUNIT_ASSERT(fHandler.Looper() == NULL);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -37,10 +37,10 @@ void TLooperTest::LooperTest2()
|
|||||||
{
|
{
|
||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
Looper.AddHandler(&fHandler);
|
Looper.AddHandler(&fHandler);
|
||||||
assert(fHandler.Looper() == &Looper);
|
CPPUNIT_ASSERT(fHandler.Looper() == &Looper);
|
||||||
|
|
||||||
assert(Looper.RemoveHandler(&fHandler));
|
CPPUNIT_ASSERT(Looper.RemoveHandler(&fHandler));
|
||||||
assert(fHandler.Looper() == NULL);
|
CPPUNIT_ASSERT(fHandler.Looper() == NULL);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
Test* TLooperTest::Suite()
|
Test* TLooperTest::Suite()
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
void TNextHandlerTest::NextHandler1()
|
void TNextHandlerTest::NextHandler1()
|
||||||
{
|
{
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
assert(Handler.NextHandler() == NULL);
|
CPPUNIT_ASSERT(Handler.NextHandler() == NULL);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -39,7 +39,7 @@ void TNextHandlerTest::NextHandler2()
|
|||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
Looper.AddHandler(&Handler);
|
Looper.AddHandler(&Handler);
|
||||||
assert(Handler.NextHandler() == &Looper);
|
CPPUNIT_ASSERT(Handler.NextHandler() == &Looper);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
Test* TNextHandlerTest::Suite()
|
Test* TNextHandlerTest::Suite()
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
void TRemoveFilterTest::RemoveFilter1()
|
void TRemoveFilterTest::RemoveFilter1()
|
||||||
{
|
{
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
assert(!Handler.RemoveFilter(NULL));
|
CPPUNIT_ASSERT(!Handler.RemoveFilter(NULL));
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -48,7 +48,7 @@ void TRemoveFilterTest::RemoveFilter2()
|
|||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
BMessageFilter* Filter = new BMessageFilter('1234');
|
BMessageFilter* Filter = new BMessageFilter('1234');
|
||||||
Handler.AddFilter(Filter);
|
Handler.AddFilter(Filter);
|
||||||
assert(Handler.RemoveFilter(Filter));
|
CPPUNIT_ASSERT(Handler.RemoveFilter(Filter));
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -66,7 +66,7 @@ void TRemoveFilterTest::RemoveFilter3()
|
|||||||
Looper.AddHandler(&Handler);
|
Looper.AddHandler(&Handler);
|
||||||
BMessageFilter* Filter = new BMessageFilter('1234');
|
BMessageFilter* Filter = new BMessageFilter('1234');
|
||||||
Handler.AddFilter(Filter);
|
Handler.AddFilter(Filter);
|
||||||
assert(Handler.RemoveFilter(Filter));
|
CPPUNIT_ASSERT(Handler.RemoveFilter(Filter));
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -83,7 +83,7 @@ void TRemoveFilterTest::RemoveFilter4()
|
|||||||
Looper.Lock();
|
Looper.Lock();
|
||||||
BMessageFilter* Filter = new BMessageFilter('1234');
|
BMessageFilter* Filter = new BMessageFilter('1234');
|
||||||
Handler.AddFilter(Filter);
|
Handler.AddFilter(Filter);
|
||||||
assert(Handler.RemoveFilter(Filter));
|
CPPUNIT_ASSERT(Handler.RemoveFilter(Filter));
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -98,7 +98,7 @@ void TRemoveFilterTest::RemoveFilter5()
|
|||||||
{
|
{
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
BMessageFilter* Filter = new BMessageFilter('1234');
|
BMessageFilter* Filter = new BMessageFilter('1234');
|
||||||
assert(!Handler.RemoveFilter(Filter));
|
CPPUNIT_ASSERT(!Handler.RemoveFilter(Filter));
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -116,7 +116,7 @@ void TRemoveFilterTest::RemoveFilter6()
|
|||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
Looper.AddHandler(&Handler);
|
Looper.AddHandler(&Handler);
|
||||||
BMessageFilter* Filter = new BMessageFilter('1234');
|
BMessageFilter* Filter = new BMessageFilter('1234');
|
||||||
assert(!Handler.RemoveFilter(Filter));
|
CPPUNIT_ASSERT(!Handler.RemoveFilter(Filter));
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -133,7 +133,7 @@ void TRemoveFilterTest::RemoveFilter7()
|
|||||||
Looper.AddHandler(&Handler);
|
Looper.AddHandler(&Handler);
|
||||||
Looper.Lock();
|
Looper.Lock();
|
||||||
BMessageFilter* Filter = new BMessageFilter('1234');
|
BMessageFilter* Filter = new BMessageFilter('1234');
|
||||||
assert(!Handler.RemoveFilter(Filter));
|
CPPUNIT_ASSERT(!Handler.RemoveFilter(Filter));
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
Test* TRemoveFilterTest::Suite()
|
Test* TRemoveFilterTest::Suite()
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ void TSetFilterListTest::SetFilterList1()
|
|||||||
{
|
{
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
Handler.SetFilterList(NULL);
|
Handler.SetFilterList(NULL);
|
||||||
assert(!Handler.FilterList());
|
CPPUNIT_ASSERT(!Handler.FilterList());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -49,7 +49,7 @@ void TSetFilterListTest::SetFilterList2()
|
|||||||
Filters->AddItem((void*)Filter);
|
Filters->AddItem((void*)Filter);
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
Handler.SetFilterList(Filters);
|
Handler.SetFilterList(Filters);
|
||||||
assert(Handler.FilterList() == Filters);
|
CPPUNIT_ASSERT(Handler.FilterList() == Filters);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -62,6 +62,8 @@ void TSetFilterListTest::SetFilterList2()
|
|||||||
*/
|
*/
|
||||||
void TSetFilterListTest::SetFilterList3()
|
void TSetFilterListTest::SetFilterList3()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
|
|
||||||
@@ -76,7 +78,7 @@ void TSetFilterListTest::SetFilterList3()
|
|||||||
}
|
}
|
||||||
|
|
||||||
Handler.SetFilterList(Filters);
|
Handler.SetFilterList(Filters);
|
||||||
assert(!Handler.FilterList());
|
CPPUNIT_ASSERT(!Handler.FilterList());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -95,7 +97,7 @@ void TSetFilterListTest::SetFilterList4()
|
|||||||
Looper.Lock();
|
Looper.Lock();
|
||||||
Looper.AddHandler(&Handler);
|
Looper.AddHandler(&Handler);
|
||||||
Handler.SetFilterList(Filters);
|
Handler.SetFilterList(Filters);
|
||||||
assert(Handler.FilterList() == Filters);
|
CPPUNIT_ASSERT(Handler.FilterList() == Filters);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -114,10 +116,10 @@ void TSetFilterListTest::SetFilterList5()
|
|||||||
Looper.Lock();
|
Looper.Lock();
|
||||||
Looper.AddHandler(&Handler);
|
Looper.AddHandler(&Handler);
|
||||||
Handler.SetFilterList(Filters);
|
Handler.SetFilterList(Filters);
|
||||||
assert(Handler.FilterList() == Filters);
|
CPPUNIT_ASSERT(Handler.FilterList() == Filters);
|
||||||
|
|
||||||
Handler.SetFilterList(NULL);
|
Handler.SetFilterList(NULL);
|
||||||
assert(!Handler.FilterList());
|
CPPUNIT_ASSERT(!Handler.FilterList());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
Test* TSetFilterListTest::Suite()
|
Test* TSetFilterListTest::Suite()
|
||||||
|
|||||||
@@ -35,10 +35,10 @@ void TSetNextHandlerTest::SetNextHandler0()
|
|||||||
Looper.AddHandler(&Handler2);
|
Looper.AddHandler(&Handler2);
|
||||||
|
|
||||||
Handler1.SetNextHandler(&Handler2);
|
Handler1.SetNextHandler(&Handler2);
|
||||||
assert(Handler1.NextHandler() == &Handler2);
|
CPPUNIT_ASSERT(Handler1.NextHandler() == &Handler2);
|
||||||
|
|
||||||
Handler1.SetNextHandler(NULL);
|
Handler1.SetNextHandler(NULL);
|
||||||
assert(!Handler1.NextHandler());
|
CPPUNIT_ASSERT(!Handler1.NextHandler());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -52,10 +52,12 @@ void TSetNextHandlerTest::SetNextHandler0()
|
|||||||
*/
|
*/
|
||||||
void TSetNextHandlerTest::SetNextHandler1()
|
void TSetNextHandlerTest::SetNextHandler1()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BHandler Handler1;
|
BHandler Handler1;
|
||||||
BHandler Handler2;
|
BHandler Handler2;
|
||||||
Handler1.SetNextHandler(&Handler2);
|
Handler1.SetNextHandler(&Handler2);
|
||||||
assert(Handler1.NextHandler() == NULL);
|
CPPUNIT_ASSERT(Handler1.NextHandler() == NULL);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -64,17 +66,20 @@ void TSetNextHandlerTest::SetNextHandler1()
|
|||||||
@case Handler1 belongs to a unlocked BLooper, Handler2 does not
|
@case Handler1 belongs to a unlocked BLooper, Handler2 does not
|
||||||
@param handler Valid BHandler pointer
|
@param handler Valid BHandler pointer
|
||||||
@results NextHandler() returns BLooper
|
@results NextHandler() returns BLooper
|
||||||
debug message "The handler and its NextHandler must have
|
debug message "The handler's looper must be locked before
|
||||||
the same looper"
|
setting NextHandler"
|
||||||
*/
|
*/
|
||||||
void TSetNextHandlerTest::SetNextHandler2()
|
void TSetNextHandlerTest::SetNextHandler2()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BHandler Handler1;
|
BHandler Handler1;
|
||||||
BHandler Handler2;
|
BHandler Handler2;
|
||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
Looper.AddHandler(&Handler1);
|
Looper.AddHandler(&Handler1);
|
||||||
|
Looper.Unlock();
|
||||||
Handler1.SetNextHandler(&Handler2);
|
Handler1.SetNextHandler(&Handler2);
|
||||||
assert(Handler1.NextHandler() == &Looper);
|
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -88,13 +93,14 @@ void TSetNextHandlerTest::SetNextHandler2()
|
|||||||
*/
|
*/
|
||||||
void TSetNextHandlerTest::SetNextHandler3()
|
void TSetNextHandlerTest::SetNextHandler3()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BHandler Handler1;
|
BHandler Handler1;
|
||||||
BHandler Handler2;
|
BHandler Handler2;
|
||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
Looper.AddHandler(&Handler1);
|
Looper.AddHandler(&Handler1);
|
||||||
Looper.Lock();
|
|
||||||
Handler1.SetNextHandler(&Handler2);
|
Handler1.SetNextHandler(&Handler2);
|
||||||
assert(Handler1.NextHandler() == &Looper);
|
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -108,12 +114,15 @@ void TSetNextHandlerTest::SetNextHandler3()
|
|||||||
*/
|
*/
|
||||||
void TSetNextHandlerTest::SetNextHandler4()
|
void TSetNextHandlerTest::SetNextHandler4()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BHandler Handler1;
|
BHandler Handler1;
|
||||||
BHandler Handler2;
|
BHandler Handler2;
|
||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
Looper.AddHandler(&Handler2);
|
Looper.AddHandler(&Handler2);
|
||||||
|
Looper.Unlock();
|
||||||
Handler1.SetNextHandler(&Handler2);
|
Handler1.SetNextHandler(&Handler2);
|
||||||
assert(Handler1.NextHandler() == NULL);
|
CPPUNIT_ASSERT(Handler1.NextHandler() == NULL);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -127,13 +136,14 @@ void TSetNextHandlerTest::SetNextHandler4()
|
|||||||
*/
|
*/
|
||||||
void TSetNextHandlerTest::SetNextHandler5()
|
void TSetNextHandlerTest::SetNextHandler5()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BHandler Handler1;
|
BHandler Handler1;
|
||||||
BHandler Handler2;
|
BHandler Handler2;
|
||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
Looper.AddHandler(&Handler2);
|
Looper.AddHandler(&Handler2);
|
||||||
Looper.Lock();
|
|
||||||
Handler1.SetNextHandler(&Handler2);
|
Handler1.SetNextHandler(&Handler2);
|
||||||
assert(Handler1.NextHandler() == NULL);
|
CPPUNIT_ASSERT(Handler1.NextHandler() == NULL);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -147,14 +157,18 @@ void TSetNextHandlerTest::SetNextHandler5()
|
|||||||
*/
|
*/
|
||||||
void TSetNextHandlerTest::SetNextHandler6()
|
void TSetNextHandlerTest::SetNextHandler6()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BHandler Handler1;
|
BHandler Handler1;
|
||||||
BHandler Handler2;
|
BHandler Handler2;
|
||||||
BLooper Looper1;
|
BLooper Looper1;
|
||||||
BLooper Looper2;
|
BLooper Looper2;
|
||||||
Looper1.AddHandler(&Handler1);
|
Looper1.AddHandler(&Handler1);
|
||||||
Looper2.AddHandler(&Handler2);
|
Looper2.AddHandler(&Handler2);
|
||||||
|
Looper1.Unlock();
|
||||||
|
Looper2.Unlock();
|
||||||
Handler1.SetNextHandler(&Handler2);
|
Handler1.SetNextHandler(&Handler2);
|
||||||
assert(Handler1.NextHandler() == &Looper1);
|
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper1);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -169,15 +183,17 @@ void TSetNextHandlerTest::SetNextHandler6()
|
|||||||
*/
|
*/
|
||||||
void TSetNextHandlerTest::SetNextHandler7()
|
void TSetNextHandlerTest::SetNextHandler7()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BHandler Handler1;
|
BHandler Handler1;
|
||||||
BHandler Handler2;
|
BHandler Handler2;
|
||||||
BLooper Looper1;
|
BLooper Looper1;
|
||||||
BLooper Looper2;
|
BLooper Looper2;
|
||||||
Looper1.AddHandler(&Handler1);
|
Looper1.AddHandler(&Handler1);
|
||||||
Looper2.AddHandler(&Handler2);
|
Looper2.AddHandler(&Handler2);
|
||||||
Looper1.Lock();
|
Looper2.Unlock();
|
||||||
Handler1.SetNextHandler(&Handler2);
|
Handler1.SetNextHandler(&Handler2);
|
||||||
assert(Handler1.NextHandler() == &Looper1);
|
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper1);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -192,15 +208,17 @@ void TSetNextHandlerTest::SetNextHandler7()
|
|||||||
*/
|
*/
|
||||||
void TSetNextHandlerTest::SetNextHandler8()
|
void TSetNextHandlerTest::SetNextHandler8()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BHandler Handler1;
|
BHandler Handler1;
|
||||||
BHandler Handler2;
|
BHandler Handler2;
|
||||||
BLooper Looper1;
|
BLooper Looper1;
|
||||||
BLooper Looper2;
|
BLooper Looper2;
|
||||||
Looper1.AddHandler(&Handler1);
|
Looper1.AddHandler(&Handler1);
|
||||||
Looper2.AddHandler(&Handler2);
|
Looper2.AddHandler(&Handler2);
|
||||||
Looper2.Lock();
|
Looper1.Unlock();
|
||||||
Handler1.SetNextHandler(&Handler2);
|
Handler1.SetNextHandler(&Handler2);
|
||||||
assert(Handler1.NextHandler() == &Looper1);
|
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper1);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -214,16 +232,16 @@ void TSetNextHandlerTest::SetNextHandler8()
|
|||||||
*/
|
*/
|
||||||
void TSetNextHandlerTest::SetNextHandler9()
|
void TSetNextHandlerTest::SetNextHandler9()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BHandler Handler1;
|
BHandler Handler1;
|
||||||
BHandler Handler2;
|
BHandler Handler2;
|
||||||
BLooper Looper1;
|
BLooper Looper1;
|
||||||
BLooper Looper2;
|
BLooper Looper2;
|
||||||
Looper1.AddHandler(&Handler1);
|
Looper1.AddHandler(&Handler1);
|
||||||
Looper2.AddHandler(&Handler2);
|
Looper2.AddHandler(&Handler2);
|
||||||
Looper1.Lock();
|
|
||||||
Looper2.Lock();
|
|
||||||
Handler1.SetNextHandler(&Handler2);
|
Handler1.SetNextHandler(&Handler2);
|
||||||
assert(Handler1.NextHandler() == &Looper1);
|
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper1);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -232,18 +250,23 @@ void TSetNextHandlerTest::SetNextHandler9()
|
|||||||
@case Handler1 and Handler2 belong to the same unlocked BLooper
|
@case Handler1 and Handler2 belong to the same unlocked BLooper
|
||||||
@param handler Valid BHandler pointer
|
@param handler Valid BHandler pointer
|
||||||
@results Returns Handler2
|
@results Returns Handler2
|
||||||
@note Docs say the looper must be locked, but the original
|
debug message "The handler's looper must be locked before
|
||||||
implementation allows the next handler to be set anyway.
|
setting NextHandler"
|
||||||
|
@note R5 implementation allows the next handler to be set anyway;
|
||||||
|
we do the same.
|
||||||
*/
|
*/
|
||||||
void TSetNextHandlerTest::SetNextHandler10()
|
void TSetNextHandlerTest::SetNextHandler10()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
BHandler Handler1;
|
BHandler Handler1;
|
||||||
BHandler Handler2;
|
BHandler Handler2;
|
||||||
Looper.AddHandler(&Handler1);
|
Looper.AddHandler(&Handler1);
|
||||||
Looper.AddHandler(&Handler2);
|
Looper.AddHandler(&Handler2);
|
||||||
|
Looper.Unlock();
|
||||||
Handler1.SetNextHandler(&Handler2);
|
Handler1.SetNextHandler(&Handler2);
|
||||||
assert(Handler1.NextHandler() == &Handler2);
|
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -260,9 +283,8 @@ void TSetNextHandlerTest::SetNextHandler11()
|
|||||||
BHandler Handler2;
|
BHandler Handler2;
|
||||||
Looper.AddHandler(&Handler1);
|
Looper.AddHandler(&Handler1);
|
||||||
Looper.AddHandler(&Handler2);
|
Looper.AddHandler(&Handler2);
|
||||||
Looper.Lock();
|
|
||||||
Handler1.SetNextHandler(&Handler2);
|
Handler1.SetNextHandler(&Handler2);
|
||||||
assert(Handler1.NextHandler() == &Handler2);
|
CPPUNIT_ASSERT(Handler1.NextHandler() == &Handler2);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
Test* TSetNextHandlerTest::Suite()
|
Test* TSetNextHandlerTest::Suite()
|
||||||
@@ -270,15 +292,15 @@ Test* TSetNextHandlerTest::Suite()
|
|||||||
TestSuite* SuiteOfTests = new TestSuite("BHandler::SetNextHandler");
|
TestSuite* SuiteOfTests = new TestSuite("BHandler::SetNextHandler");
|
||||||
|
|
||||||
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler0);
|
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler0);
|
||||||
// ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler1);
|
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler1);
|
||||||
// ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler2);
|
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler2);
|
||||||
// ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler3);
|
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler3);
|
||||||
// ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler4);
|
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler4);
|
||||||
// ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler5);
|
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler5);
|
||||||
// ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler6);
|
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler6);
|
||||||
// ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler7);
|
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler7);
|
||||||
// ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler8);
|
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler8);
|
||||||
// ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler9);
|
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler9);
|
||||||
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler10);
|
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler10);
|
||||||
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler11);
|
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler11);
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ void TUnlockLooperTest::UnlockLooper1()
|
|||||||
*/
|
*/
|
||||||
void TUnlockLooperTest::UnlockLooper2()
|
void TUnlockLooperTest::UnlockLooper2()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
Looper.AddHandler(&Handler);
|
Looper.AddHandler(&Handler);
|
||||||
|
|||||||
@@ -8,4 +8,8 @@ case 5: looper is locked, message is posted, queue is emptied
|
|||||||
|
|
||||||
RemoveHandler(BHandler* handler)
|
RemoveHandler(BHandler* handler)
|
||||||
--------------
|
--------------
|
||||||
|
case : handler is NULL
|
||||||
|
case : handler doesn't belong to this looper
|
||||||
|
case : handler is valid, looper is unlocked
|
||||||
|
case : handler doesn't belong to this looper, looper is unlocked
|
||||||
case : handler has filters; FilterList() should be NULL on remove
|
case : handler has filters; FilterList() should be NULL on remove
|
||||||
|
|||||||
@@ -5,9 +5,11 @@
|
|||||||
|
|
||||||
// Standard Includes -----------------------------------------------------------
|
// Standard Includes -----------------------------------------------------------
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <posix/string.h>
|
||||||
|
|
||||||
// System Includes -------------------------------------------------------------
|
// System Includes -------------------------------------------------------------
|
||||||
#include <Looper.h>
|
#include <Looper.h>
|
||||||
|
#include <Message.h>
|
||||||
#include <MessageQueue.h>
|
#include <MessageQueue.h>
|
||||||
|
|
||||||
// Project Includes ------------------------------------------------------------
|
// Project Includes ------------------------------------------------------------
|
||||||
@@ -24,20 +26,22 @@ port_id _get_looper_port_(const BLooper* looper);
|
|||||||
//case 1: looper is unlocked and queue is empty
|
//case 1: looper is unlocked and queue is empty
|
||||||
void TIsMessageWaitingTest::IsMessageWaiting1()
|
void TIsMessageWaitingTest::IsMessageWaiting1()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
#ifndef TEST_R5
|
Looper.Unlock();
|
||||||
assert(!Looper.IsMessageWaiting());
|
CPPUNIT_ASSERT(!Looper.IsMessageWaiting());
|
||||||
#else
|
|
||||||
assert(Looper.IsMessageWaiting());
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
//case 2: looper is unlocked and queue is filled
|
//case 2: looper is unlocked and queue is filled
|
||||||
void TIsMessageWaitingTest::IsMessageWaiting2()
|
void TIsMessageWaitingTest::IsMessageWaiting2()
|
||||||
{
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
|
Looper.Unlock();
|
||||||
Looper.PostMessage('1234');
|
Looper.PostMessage('1234');
|
||||||
assert(Looper.IsMessageWaiting());
|
CPPUNIT_ASSERT(!Looper.IsMessageWaiting());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
//case 3: looper is locked and queue is empty
|
//case 3: looper is locked and queue is empty
|
||||||
@@ -46,9 +50,24 @@ void TIsMessageWaitingTest::IsMessageWaiting3()
|
|||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
Looper.Lock();
|
Looper.Lock();
|
||||||
#ifndef TEST_R5
|
#ifndef TEST_R5
|
||||||
assert(!Looper.IsMessageWaiting());
|
CPPUNIT_ASSERT(!Looper.IsMessageWaiting());
|
||||||
#else
|
#else
|
||||||
assert(Looper.IsMessageWaiting());
|
#if 0
|
||||||
|
// Testing to figure out why we get false positives from the R5
|
||||||
|
// implementation of BLooper::IsMessageWaiting().
|
||||||
|
CPPUNIT_ASSERT(Looper.IsLocked());
|
||||||
|
CPPUNIT_ASSERT(Looper.MessageQueue()->IsEmpty());
|
||||||
|
|
||||||
|
int32 count;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
count = port_buffer_size_etc(_get_looper_port_(&Looper), B_TIMEOUT, 0);
|
||||||
|
} while (count == B_INTERRUPTED);
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT(count < 0);
|
||||||
|
cout << endl << "port_buffer_size_etc: " << strerror(count) << endl;
|
||||||
|
#endif
|
||||||
|
CPPUNIT_ASSERT(Looper.IsMessageWaiting());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@@ -58,7 +77,7 @@ void TIsMessageWaitingTest::IsMessageWaiting4()
|
|||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
Looper.Lock();
|
Looper.Lock();
|
||||||
Looper.PostMessage('1234');
|
Looper.PostMessage('1234');
|
||||||
assert(Looper.IsMessageWaiting());
|
CPPUNIT_ASSERT(Looper.IsMessageWaiting());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
//case 5: looper is locked, message is posted, queue is empty
|
//case 5: looper is locked, message is posted, queue is empty
|
||||||
@@ -70,8 +89,21 @@ void TIsMessageWaitingTest::IsMessageWaiting5()
|
|||||||
// Prevent a port read
|
// Prevent a port read
|
||||||
Looper->Lock();
|
Looper->Lock();
|
||||||
Looper->PostMessage('1234');
|
Looper->PostMessage('1234');
|
||||||
assert(Looper->MessageQueue()->IsEmpty());
|
CPPUNIT_ASSERT(Looper->MessageQueue()->IsEmpty());
|
||||||
assert(Looper->IsMessageWaiting());
|
CPPUNIT_ASSERT(Looper->IsMessageWaiting());
|
||||||
|
|
||||||
|
int32 count;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
count = port_buffer_size_etc(_get_looper_port_(Looper), B_TIMEOUT, 0);
|
||||||
|
} while (count == B_INTERRUPTED);
|
||||||
|
|
||||||
|
cout << endl << "port_buffer_size_etc: ";
|
||||||
|
if (count < 0)
|
||||||
|
cout << strerror(count);
|
||||||
|
else
|
||||||
|
cout << count;
|
||||||
|
cout << endl;
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
Test* TIsMessageWaitingTest::Suite()
|
Test* TIsMessageWaitingTest::Suite()
|
||||||
|
|||||||
@@ -19,6 +19,67 @@
|
|||||||
|
|
||||||
// Globals ---------------------------------------------------------------------
|
// Globals ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
RemoveHandler(BHandler* handler)
|
||||||
|
@case handler is NULL
|
||||||
|
@param handler NULL
|
||||||
|
@results RemoveHandler() returns false. R5 implementation seg faults;
|
||||||
|
we've fixed that.
|
||||||
|
*/
|
||||||
|
void TRemoveHandlerTest::RemoveHandler1()
|
||||||
|
{
|
||||||
|
BLooper Looper;
|
||||||
|
#ifndef TEST_R5
|
||||||
|
CPPUNIT_ASSERT(!Looper.RemoveHandler(NULL));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
RemoveHandler(BHandler* handler)
|
||||||
|
@case handler doesn't belong to this looper
|
||||||
|
@param handler Valid BHandler pointer, not assigned to looper
|
||||||
|
@results
|
||||||
|
*/
|
||||||
|
void TRemoveHandlerTest::RemoveHandler2()
|
||||||
|
{
|
||||||
|
BLooper Looper;
|
||||||
|
BHandler Handler;
|
||||||
|
CPPUNIT_ASSERT(!Looper.RemoveHandler(&Handler));
|
||||||
|
}
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
RemoveHandler(BHandler* handler)
|
||||||
|
@case handler is valid, looper is unlocked
|
||||||
|
@param handler Valid BHandler pointer, assigned to looper
|
||||||
|
@results goes to debugger, but removes handler anyway
|
||||||
|
*/
|
||||||
|
void TRemoveHandlerTest::RemoveHandler3()
|
||||||
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
|
BLooper Looper;
|
||||||
|
BHandler Handler;
|
||||||
|
Looper.AddHandler(&Handler);
|
||||||
|
Looper.Unlock();
|
||||||
|
CPPUNIT_ASSERT(Looper.RemoveHandler(&Handler));
|
||||||
|
}
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
RemoveHandler(BHandler* handler)
|
||||||
|
@case handler doesn't belong to this looper, looper is unlocked
|
||||||
|
@param handler Valid BHandler pointer, not assigned to looper
|
||||||
|
@results
|
||||||
|
*/
|
||||||
|
void TRemoveHandlerTest::RemoveHandler4()
|
||||||
|
{
|
||||||
|
DEBUGGER_ESCAPE;
|
||||||
|
|
||||||
|
BLooper Looper;
|
||||||
|
BHandler Handler;
|
||||||
|
Looper.Unlock();
|
||||||
|
CPPUNIT_ASSERT(!Looper.RemoveHandler(&Handler));
|
||||||
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
RemoveHandler(BHandler* handler)
|
RemoveHandler(BHandler* handler)
|
||||||
@@ -27,7 +88,7 @@
|
|||||||
@results RemoveHandler() returns true
|
@results RemoveHandler() returns true
|
||||||
handler->FilterList() returns NULL after removal
|
handler->FilterList() returns NULL after removal
|
||||||
*/
|
*/
|
||||||
void TRemoveHandlerTest::RemoveHandler1()
|
void TRemoveHandlerTest::RemoveHandler5()
|
||||||
{
|
{
|
||||||
BLooper Looper;
|
BLooper Looper;
|
||||||
BHandler Handler;
|
BHandler Handler;
|
||||||
@@ -35,8 +96,8 @@ void TRemoveHandlerTest::RemoveHandler1()
|
|||||||
|
|
||||||
Handler.AddFilter(MessageFilter);
|
Handler.AddFilter(MessageFilter);
|
||||||
Looper.AddHandler(&Handler);
|
Looper.AddHandler(&Handler);
|
||||||
Looper.RemoveHandler(&Handler);
|
CPPUNIT_ASSERT(Looper.RemoveHandler(&Handler));
|
||||||
assert(Handler.FilterList());
|
CPPUNIT_ASSERT(Handler.FilterList());
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
Test* TRemoveHandlerTest::Suite()
|
Test* TRemoveHandlerTest::Suite()
|
||||||
@@ -44,6 +105,10 @@ Test* TRemoveHandlerTest::Suite()
|
|||||||
TestSuite* suite = new TestSuite("BLooper::RemoveHandler(BHandler* handler)");
|
TestSuite* suite = new TestSuite("BLooper::RemoveHandler(BHandler* handler)");
|
||||||
|
|
||||||
ADD_TEST(suite, TRemoveHandlerTest, RemoveHandler1);
|
ADD_TEST(suite, TRemoveHandlerTest, RemoveHandler1);
|
||||||
|
ADD_TEST(suite, TRemoveHandlerTest, RemoveHandler2);
|
||||||
|
ADD_TEST(suite, TRemoveHandlerTest, RemoveHandler3);
|
||||||
|
ADD_TEST(suite, TRemoveHandlerTest, RemoveHandler4);
|
||||||
|
ADD_TEST(suite, TRemoveHandlerTest, RemoveHandler5);
|
||||||
|
|
||||||
return suite;
|
return suite;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,10 @@ class TRemoveHandlerTest : public TestCase
|
|||||||
TRemoveHandlerTest(std::string name) : TestCase(name) {;}
|
TRemoveHandlerTest(std::string name) : TestCase(name) {;}
|
||||||
|
|
||||||
void RemoveHandler1();
|
void RemoveHandler1();
|
||||||
|
void RemoveHandler2();
|
||||||
|
void RemoveHandler3();
|
||||||
|
void RemoveHandler4();
|
||||||
|
void RemoveHandler5();
|
||||||
|
|
||||||
static Test* Suite();
|
static Test* Suite();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -39,6 +39,12 @@
|
|||||||
cout << endl << "status_t == \"" << strerror((status__)) << "\" (" \
|
cout << endl << "status_t == \"" << strerror((status__)) << "\" (" \
|
||||||
<< (status__) << ") in " << __PRETTY_FUNCTION__ << endl
|
<< (status__) << ") in " << __PRETTY_FUNCTION__ << endl
|
||||||
|
|
||||||
|
#ifdef USE_DEBUGGER_TESTS
|
||||||
|
#define DEBUGGER_ESCAPE
|
||||||
|
#else
|
||||||
|
#define DEBUGGER_ESCAPE return
|
||||||
|
#endif
|
||||||
|
|
||||||
// Globals ---------------------------------------------------------------------
|
// Globals ---------------------------------------------------------------------
|
||||||
|
|
||||||
using namespace CppUnit;
|
using namespace CppUnit;
|
||||||
|
|||||||
Reference in New Issue
Block a user