#include <Handler.h>
#include <Looper.h>
#include "IndexOfTest.h"
IndexOf(BHandler* handler)
@case handler is NULL
@param handler NULL
@results IndexOf() returns B_ERROR
*/
void TIndexOfTest::IndexOfTest1()
{
BLooper Looper;
CPPUNIT_ASSERT(Looper.IndexOf(NULL) == B_ERROR);
}
IndexOf(BHandler* handler)
@case handler is valid, doesn't belong to this looper
@param handler Valid BHandler pointer, not assigned to this looper
@results IndexOf() returns B_ERROR
*/
void TIndexOfTest::IndexOfTest2()
{
BLooper Looper;
BHandler Handler;
CPPUNIT_ASSERT(Looper.IndexOf(&Handler) == B_ERROR);
}
IndexOf(BHandler* handler)
@case handler is valid, belongs to looper
@param handler Valid BHandler pointer, assigned to this looper
@results IndexOf returns 1
*/
void TIndexOfTest::IndexOfTest3()
{
BLooper Looper;
BHandler Handler;
Looper.AddHandler(&Handler);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler) == 1);
}
IndexOf(BHandler* handler)
@case handler is valid, one of many added and removed
@param handler Valid BHandler pointer, assigned to this looper
@results IndexOf() returns correct index for each handler
*/
void TIndexOfTest::IndexOfTest4()
{
BLooper Looper;
BHandler Handler1;
BHandler Handler2;
BHandler Handler3;
BHandler Handler4;
BHandler Handler5;
Looper.AddHandler(&Handler1);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler1) == 1);
Looper.AddHandler(&Handler2);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler1) == 1);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler2) == 2);
Looper.AddHandler(&Handler3);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler1) == 1);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler2) == 2);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler3) == 3);
Looper.AddHandler(&Handler4);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler1) == 1);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler2) == 2);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler3) == 3);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler4) == 4);
Looper.AddHandler(&Handler5);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler1) == 1);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler2) == 2);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler3) == 3);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler4) == 4);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler5) == 5);
Looper.RemoveHandler(&Handler5);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler1) == 1);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler2) == 2);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler3) == 3);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler4) == 4);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler5) == B_ERROR);
Looper.RemoveHandler(&Handler4);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler1) == 1);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler2) == 2);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler3) == 3);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler4) == B_ERROR);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler5) == B_ERROR);
Looper.RemoveHandler(&Handler3);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler1) == 1);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler2) == 2);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler3) == B_ERROR);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler4) == B_ERROR);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler5) == B_ERROR);
Looper.RemoveHandler(&Handler2);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler1) == 1);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler2) == B_ERROR);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler3) == B_ERROR);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler4) == B_ERROR);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler5) == B_ERROR);
Looper.RemoveHandler(&Handler1);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler1) == B_ERROR);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler2) == B_ERROR);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler3) == B_ERROR);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler4) == B_ERROR);
CPPUNIT_ASSERT(Looper.IndexOf(&Handler5) == B_ERROR);
}
IndexOf(BHandler* handler)
@case handler is valid, looper is unlocked
@param handler Valid BHandler pointer, assigned to this looper
@results IndexOf returns 1. Debugger message "Looper must be locked
before calling IndexOf."
*/
void TIndexOfTest::IndexOfTest5()
{
DEBUGGER_ESCAPE;
BLooper Looper;
BHandler Handler;
Looper.AddHandler(&Handler);
Looper.Unlock();
CPPUNIT_ASSERT(Looper.IndexOf(&Handler) == 1);
}
IndexOf(BHandler* handler)
@case handler is "this"
@param handler The looper's this pointer
@result IndexOf() returns 0
*/
void TIndexOfTest::IndexOfTest6()
{
BLooper Looper;
CPPUNIT_ASSERT(Looper.IndexOf(&Looper) == 0);
}
TestSuite* TIndexOfTest::Suite()
{
TestSuite* suite = new TestSuite("BLooper::IndexOf(BHandler*)");
ADD_TEST4(BLooper, suite, TIndexOfTest, IndexOfTest1);
ADD_TEST4(BLooper, suite, TIndexOfTest, IndexOfTest2);
ADD_TEST4(BLooper, suite, TIndexOfTest, IndexOfTest3);
ADD_TEST4(BLooper, suite, TIndexOfTest, IndexOfTest4);
ADD_TEST4(BLooper, suite, TIndexOfTest, IndexOfTest5);
ADD_TEST4(BLooper, suite, TIndexOfTest, IndexOfTest6);
return suite;
}
* $Log $
*
* $Id $
*
*/