root/src/tests/kits/app/blooper/RunTest.cpp
//------------------------------------------------------------------------------
//      RunTest.cpp
//
//------------------------------------------------------------------------------

// Standard Includes -----------------------------------------------------------

// System Includes -------------------------------------------------------------
#include <Looper.h>

// Project Includes ------------------------------------------------------------

// Local Includes --------------------------------------------------------------
#include "RunTest.h"

// Local Defines ---------------------------------------------------------------

// Globals ---------------------------------------------------------------------

//------------------------------------------------------------------------------
/**
        Run()
        @case           Attempt to call Run() twice
        @results        debugger message "can't call BLooper::Run twice!"
 */
void TRunTest::RunTest1()
{
        DEBUGGER_ESCAPE;

        BLooper Looper;
        Looper.Run();
        Looper.Run();
        Looper.Quit();
}
//------------------------------------------------------------------------------
/**
        Run()
        @case           Check thread_id of Looper
        @results        Run() and Thread() return the same thread_id
 */
void TRunTest::RunTest2()
{
        BLooper* Looper = new BLooper;
        thread_id tid = Looper->Run();
        CPPUNIT_ASSERT(tid == Looper->Thread());
        Looper->Lock();
        Looper->Quit();
}
//------------------------------------------------------------------------------
/**
        Run()
        @case           Delete looper after calling Run()
        @results        Debugger message "You can't call delete on a BLooper object
                                once it is running."
 */
void TRunTest::RunTest3()
{
        BLooper* Looper = new BLooper;
        Looper->Run();
        delete Looper;
}
//------------------------------------------------------------------------------
#ifdef ADD_TEST
#undef ADD_TEST
#endif
#define ADD_TEST(__test_name__) \
        ADD_TEST4(BLooper, suite, TRunTest, __test_name__)

TestSuite* TRunTest::Suite()
{
        TestSuite* suite = new TestSuite("BLooper::Run()");

        ADD_TEST(RunTest1);
        ADD_TEST(RunTest2);

        return suite;
}
//------------------------------------------------------------------------------

/*
 * $Log $
 *
 * $Id  $
 *
 */