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

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

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

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

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

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

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

//------------------------------------------------------------------------------
/**
        AddCommonFilter(BMessageFilter* filter)
        @case           NULL filter
        @param          filter is NULL
        @results        none
        @note           R5 chokes on this test; doesn't param check, apparently.
 */
void TAddCommonFilterTest::AddCommonFilterTest1()
{
#ifndef TEST_R5
        BLooper Looper;
        Looper.AddCommonFilter(NULL);
#endif
}
//------------------------------------------------------------------------------
/**
        AddCommonFilter(BMessageFilter* filter)
        @case           Valid filter, looper not locked
        @param          Valid BMessageFilter pointer
        @results        Debugger message "Owning Looper must be locked before calling
                                AddCommonFilter".  Also, since internal filter list construction
                                is delayed until a filter is added, CommonFilterList() should
                                return NULL.
 */
void TAddCommonFilterTest::AddCommonFilterTest2()
{
        DEBUGGER_ESCAPE;

        BLooper Looper;
        Looper.Unlock();
        BMessageFilter* Filter = new BMessageFilter('1234');
        Looper.AddCommonFilter(Filter);
        CPPUNIT_ASSERT(Looper.CommonFilterList() == NULL);
}
//------------------------------------------------------------------------------
/**
        AddCommonFilter(BMessageFilter* filter)
        @case           Valid filter, looper locked
        @param          Valid BMessageFilter pointer
        @results        Filter is successfully added to the common filter list
 */
void TAddCommonFilterTest::AddCommonFilterTest3()
{
        BLooper Looper;
        BMessageFilter* Filter = new BMessageFilter('1234');
        Looper.AddCommonFilter(Filter);
        CPPUNIT_ASSERT(Looper.CommonFilterList()->HasItem(Filter));
}
//------------------------------------------------------------------------------
/**
        AddCommonFilter(BMessageFilter* filter)
        @case           Valid filter, looper locked, owned by another looper
        @param          Valid BMessageFilter pointer
        @results        Debugger message "A MessageFilter can only be used once."  Also,
                                since internal filter list construction is delayed until a
                                filter is added, Looper2.CommonFilterList() should return NULL.
 */
void TAddCommonFilterTest::AddCommonFilterTest4()
{
        DEBUGGER_ESCAPE;

        BLooper Looper1;
        BLooper Looper2;
        BMessageFilter* Filter = new BMessageFilter('1234');
        Looper1.AddCommonFilter(Filter);
        CPPUNIT_ASSERT(Looper1.CommonFilterList()->HasItem(Filter));
        Looper2.AddCommonFilter(Filter);
        CPPUNIT_ASSERT(Looper2.CommonFilterList() == NULL);
}
//------------------------------------------------------------------------------
#ifdef ADD_TEST
#undef ADD_TEST
#endif
#define ADD_TEST(__test_name__) \
        ADD_TEST4(BLooper, suite, TAddCommonFilterTest, __test_name__);
TestSuite* TAddCommonFilterTest::Suite()
{
        TestSuite* suite =
                new TestSuite("BLooper::AddCommonFilter(BMessageFilter*)");

        ADD_TEST(AddCommonFilterTest1);
        ADD_TEST(AddCommonFilterTest2);
        ADD_TEST(AddCommonFilterTest3);
        ADD_TEST(AddCommonFilterTest4);

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

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