#include <Looper.h>
#include "SetNextHandlerTest.h"
SetNextHandler(BHandler* handler);
NextHandler();
@case Clear the next handler
@param handler Valid BHandler pointer, then NULL
@results NextHandler() returns Handler2, then NULL
*/
void TSetNextHandlerTest::SetNextHandler0()
{
BLooper Looper;
BHandler Handler1;
BHandler Handler2;
Looper.AddHandler(&Handler1);
Looper.AddHandler(&Handler2);
Handler1.SetNextHandler(&Handler2);
CPPUNIT_ASSERT(Handler1.NextHandler() == &Handler2);
Handler1.SetNextHandler(NULL);
CPPUNIT_ASSERT(!Handler1.NextHandler());
}
SetNextHandler(BHandler* handler);
NextHandler();
@case Handler1 and Handler2 do not belong to a BLooper
@param handler Valid BHandler pointer
@results NextHandler() returns NULL
debug message "handler must belong to looper before setting
NextHandler"
*/
void TSetNextHandlerTest::SetNextHandler1()
{
DEBUGGER_ESCAPE;
BHandler Handler1;
BHandler Handler2;
Handler1.SetNextHandler(&Handler2);
CPPUNIT_ASSERT(Handler1.NextHandler() == NULL);
}
SetNextHandler(BHandler* handler);
NextHandler();
@case Handler1 belongs to a unlocked BLooper, Handler2 does not
@param handler Valid BHandler pointer
@results NextHandler() returns BLooper
debug message "The handler's looper must be locked before
setting NextHandler"
*/
void TSetNextHandlerTest::SetNextHandler2()
{
DEBUGGER_ESCAPE;
BHandler Handler1;
BHandler Handler2;
BLooper Looper;
Looper.AddHandler(&Handler1);
Looper.Unlock();
Handler1.SetNextHandler(&Handler2);
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper);
}
SetNextHandler(BHandler* handler);
NextHandler();
@case Handler1 belongs to a locked BLooper, Handler2 does not
@param handler Valid BHandler pointer
@results NextHandler() returns BLooper
debug message "The handler and its NextHandler must have
the same looper"
*/
void TSetNextHandlerTest::SetNextHandler3()
{
DEBUGGER_ESCAPE;
BHandler Handler1;
BHandler Handler2;
BLooper Looper;
Looper.AddHandler(&Handler1);
Handler1.SetNextHandler(&Handler2);
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper);
}
SetNextHandler(BHandler* handler);
NextHandler();
@case Handler2 belongs to a unlocked BLooper, Handler1 does not
@param handler Valid BHandler pointer
@results NextHandler() returns NULL
debug message "handler must belong to looper before setting
NextHandler"
*/
void TSetNextHandlerTest::SetNextHandler4()
{
DEBUGGER_ESCAPE;
BHandler Handler1;
BHandler Handler2;
BLooper Looper;
Looper.AddHandler(&Handler2);
Looper.Unlock();
Handler1.SetNextHandler(&Handler2);
CPPUNIT_ASSERT(Handler1.NextHandler() == NULL);
}
SetNextHandler(BHandler* handler);
NextHandler();
@case Handler2 belongs to a locked BLooper, Handler1 does not
@param handler Valid BHandler pointer
@results NextHandler() returns NULL
debug message "handler must belong to looper before setting
NextHandler"
*/
void TSetNextHandlerTest::SetNextHandler5()
{
DEBUGGER_ESCAPE;
BHandler Handler1;
BHandler Handler2;
BLooper Looper;
Looper.AddHandler(&Handler2);
Handler1.SetNextHandler(&Handler2);
CPPUNIT_ASSERT(Handler1.NextHandler() == NULL);
}
SetNextHandler(BHandler* handler);
NextHandler();
@case Handler1 and Handler2 belong to different unlocked BLoopers
@param handler Valid BHandler pointer
@results Returns BLooper;
debug message "The handler and its NextHandler must have the
same looper"
*/
void TSetNextHandlerTest::SetNextHandler6()
{
DEBUGGER_ESCAPE;
BHandler Handler1;
BHandler Handler2;
BLooper Looper1;
BLooper Looper2;
Looper1.AddHandler(&Handler1);
Looper2.AddHandler(&Handler2);
Looper1.Unlock();
Looper2.Unlock();
Handler1.SetNextHandler(&Handler2);
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper1);
}
SetNextHandler(BHandler* handler);
NextHandler();
@case Handler1 and Handler2 belong to different BLoopers;
Handler1's is locked; Handler2's is not
@param handler Valid BHandler pointer
@result Returns BLooper;
debug message "The handler and its NextHandler must have the
same looper"
*/
void TSetNextHandlerTest::SetNextHandler7()
{
DEBUGGER_ESCAPE;
BHandler Handler1;
BHandler Handler2;
BLooper Looper1;
BLooper Looper2;
Looper1.AddHandler(&Handler1);
Looper2.AddHandler(&Handler2);
Looper2.Unlock();
Handler1.SetNextHandler(&Handler2);
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper1);
}
SetNextHandler(BHandler* handler);
NextHandler();
@case Handler1 and Handler2 belong to different BLoopers;
Handler1's is unlocked; Handler2's is locked
@param handler Valid BHandler pointer
@results Returns BLooper
debug message "The handler and its NextHandler must have the
same looper"
*/
void TSetNextHandlerTest::SetNextHandler8()
{
DEBUGGER_ESCAPE;
BHandler Handler1;
BHandler Handler2;
BLooper Looper1;
BLooper Looper2;
Looper1.AddHandler(&Handler1);
Looper2.AddHandler(&Handler2);
Looper1.Unlock();
Handler1.SetNextHandler(&Handler2);
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper1);
}
SetNextHandler(BHandler* handler);
NextHandler();
@case Handler1 and Handler2 belong to different locked BLoopers
@param handler Valid BHandler pointer
@results Returns BLooper
debug message "The handler and its NextHandler must have the
same looper"
*/
void TSetNextHandlerTest::SetNextHandler9()
{
DEBUGGER_ESCAPE;
BHandler Handler1;
BHandler Handler2;
BLooper Looper1;
BLooper Looper2;
Looper1.AddHandler(&Handler1);
Looper2.AddHandler(&Handler2);
Handler1.SetNextHandler(&Handler2);
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper1);
}
SetNextHandler(BHandler* handler);
NextHandler();
@case Handler1 and Handler2 belong to the same unlocked BLooper
@param handler Valid BHandler pointer
@results Returns Handler2
debug message "The handler's looper must be locked before
setting NextHandler"
@note R5 implementation allows the next handler to be set anyway;
we do the same.
*/
void TSetNextHandlerTest::SetNextHandler10()
{
DEBUGGER_ESCAPE;
BLooper Looper;
BHandler Handler1;
BHandler Handler2;
Looper.AddHandler(&Handler1);
Looper.AddHandler(&Handler2);
Looper.Unlock();
Handler1.SetNextHandler(&Handler2);
CPPUNIT_ASSERT(Handler1.NextHandler() == &Looper);
}
SetNextHandler(BHandler* handler);
NextHandler();
@case Handler1 and Handler2 belong to the same locked BLooper
@param handler Valid BHandler pointer
@results Returns Handler2
*/
void TSetNextHandlerTest::SetNextHandler11()
{
BLooper Looper;
BHandler Handler1;
BHandler Handler2;
Looper.AddHandler(&Handler1);
Looper.AddHandler(&Handler2);
Handler1.SetNextHandler(&Handler2);
CPPUNIT_ASSERT(Handler1.NextHandler() == &Handler2);
}
Test* TSetNextHandlerTest::Suite()
{
TestSuite* SuiteOfTests = new TestSuite("BHandler::SetNextHandler");
ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler0);
ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler1);
ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler2);
ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler3);
ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler4);
ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler5);
ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler6);
ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler7);
ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler8);
ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler9);
ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler10);
ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler11);
return SuiteOfTests;
}
* $Log $
*
* $Id $
*
*/