root/src/tests/kits/app/bhandler/RemoveFilterTest.cpp
//------------------------------------------------------------------------------
//      RemoveFilterTest.cpp
//
//------------------------------------------------------------------------------

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

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

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

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

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

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

//------------------------------------------------------------------------------
/**
        RemoveFilter(BMessageFilter* filter)
        @case                   filter is NULL
        @param  filter  NULL
        @results                Returns false
 */
void TRemoveFilterTest::RemoveFilter1()
{
        BHandler Handler;
        CPPUNIT_ASSERT(!Handler.RemoveFilter(NULL));
}
//------------------------------------------------------------------------------
/**
        RemoveFilter(BMessageFilter* filter)
        @case                   filter is valid, handler has no looper
        @param  filter  Valid BMessageFilter pointer
        @results                Returns true.  Contrary to documentation, original
                                        implementation of BHandler doesn't care if it belongs to a
                                        looper or not.
 */
void TRemoveFilterTest::RemoveFilter2()
{
        BHandler Handler;
        BMessageFilter* Filter = new BMessageFilter('1234');
        Handler.AddFilter(Filter);
        CPPUNIT_ASSERT(Handler.RemoveFilter(Filter));
}
//------------------------------------------------------------------------------
/**
        RemoveFilter(BMessageFilter* filter)
        @case                   filter is valid, handler has looper, looper isn't locked
        @param  filter  Valid BMessageFilter pointer
        @results                Returns true.  Contrary to documentation, original
                                        implementation of BHandler doesn't care if it belongs to a
                                        looper or not.
 */
void TRemoveFilterTest::RemoveFilter3()
{
        BLooper Looper;
        BHandler Handler;
        Looper.AddHandler(&Handler);
        BMessageFilter* Filter = new BMessageFilter('1234');
        Handler.AddFilter(Filter);
        CPPUNIT_ASSERT(Handler.RemoveFilter(Filter));
}
//------------------------------------------------------------------------------
/**
        RemoveFilter(BMessageFilter* filter)
        @case                   filter is valid, handler has looper, looper is locked
        @param  filter  Valid BMessageFilter pointer
        @results                Return true.
 */
void TRemoveFilterTest::RemoveFilter4()
{
        BLooper Looper;
        BHandler Handler;
        Looper.AddHandler(&Handler);
        Looper.Lock();
        BMessageFilter* Filter = new BMessageFilter('1234');
        Handler.AddFilter(Filter);
        CPPUNIT_ASSERT(Handler.RemoveFilter(Filter));
}
//------------------------------------------------------------------------------
/**
        RemoveFilter(BMessageFilter* filter)
        @case                   filter is valid, but not owned by handler, handler has no looper
        @param  filter  Valid BMessageFilter pointer
        @results                Returns false.  Contrary to documentation, original
                                        implementation of BHandler doesn't care if it belongs to a
                                        looper or not.
 */
void TRemoveFilterTest::RemoveFilter5()
{
        BHandler Handler;
        BMessageFilter* Filter = new BMessageFilter('1234');
        CPPUNIT_ASSERT(!Handler.RemoveFilter(Filter));
}
//------------------------------------------------------------------------------
/**
        RemoveFilter(BMessageFilter* filter)
        @case                   filter is valid, but not owned by handler, handler has
                                        looper, looper isn't locked
        @param  filter  Valid BMessageFilter pointer
        @results                Returns false.  Contrary to documentation, original
                                        implementation of BHandler doesn't care if its looper is
                                        locked or not.
 */
void TRemoveFilterTest::RemoveFilter6()
{
        BLooper Looper;
        BHandler Handler;
        Looper.AddHandler(&Handler);
        BMessageFilter* Filter = new BMessageFilter('1234');
        CPPUNIT_ASSERT(!Handler.RemoveFilter(Filter));
}
//------------------------------------------------------------------------------
/**
        RemoveFilter(BMessageFilter* filter)
        @case                   filter is valid, but not owned by handler, handler has
                                        looper, looper is locked
        @param  filter  Valid BMessageFilter pointer
        @results                Returns false.
 */
void TRemoveFilterTest::RemoveFilter7()
{
        BLooper Looper;
        BHandler Handler;
        Looper.AddHandler(&Handler);
        Looper.Lock();
        BMessageFilter* Filter = new BMessageFilter('1234');
        CPPUNIT_ASSERT(!Handler.RemoveFilter(Filter));
}
//------------------------------------------------------------------------------
Test* TRemoveFilterTest::Suite()
{
        TestSuite* SuiteOfTests = new TestSuite("BHandler::RemoveFilter");

        ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter1);
        ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter2);
        ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter3);
        ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter4);
        ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter5);
        ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter6);
        ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter7);

        return SuiteOfTests;
}
//------------------------------------------------------------------------------

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