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

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

// System Includes -------------------------------------------------------------

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

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

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

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

//------------------------------------------------------------------------------
/**
        IsWatched()
        @case           No added watchers
        @results        Returns false
 */
void TIsWatchedTest::IsWatched1()
{
        CPPUNIT_ASSERT(!fHandler.IsWatched());
}
//------------------------------------------------------------------------------
/**
        IsWatched()
        @case           Add then remove watcher
        @results        Returns true after add, returns false after remove
        @note           Original implementation fails this test.  Either the removal
                                doesn't happen (unlikely) or some list-within-a-list doesn't
                                get removed when there's nothing in it anymore.
 */
void TIsWatchedTest::IsWatched2()
{
        BHandler Watcher;
        fHandler.StartWatching(&Watcher, '1234');
        CPPUNIT_ASSERT(fHandler.IsWatched() == true);

        fHandler.StopWatching(&Watcher, '1234');
#ifndef TEST_R5
        CPPUNIT_ASSERT(fHandler.IsWatched() == false);
#endif
}
//------------------------------------------------------------------------------
/**
        IsWatched()
        @case           Add watcher, send notice, then remove watcher
        @results        Returns true after add, returns false after remove
 */
void TIsWatchedTest::IsWatched3()
{
        BHandler Watcher;
        fHandler.StartWatching(&Watcher, '1234');
        CPPUNIT_ASSERT(fHandler.IsWatched() == true);

        fHandler.SendNotices('1234');

        fHandler.StopWatching(&Watcher, '1234');
        CPPUNIT_ASSERT(fHandler.IsWatched() == false);
}
//------------------------------------------------------------------------------
/**
        IsWatched()
        @case           Remove inexistent watcher
        @results        Returns false
 */
void TIsWatchedTest::IsWatched4()
{
        BHandler Watcher;

        fHandler.StopWatching(&Watcher, '1234');
        CPPUNIT_ASSERT(fHandler.IsWatched() == false);
}
//------------------------------------------------------------------------------
/**
        IsWatched()
        @case           Send notices without watchers
        @results        Returns false
 */
void TIsWatchedTest::IsWatched5()
{
        BHandler Watcher;

        // Create handler's internal list
        fHandler.StartWatching(&Watcher, '1234');
        fHandler.StopWatching(&Watcher, '1234');

        fHandler.SendNotices('1234');
        CPPUNIT_ASSERT(fHandler.IsWatched() == false);
}
//------------------------------------------------------------------------------
Test* TIsWatchedTest::Suite()
{
        TestSuite* SuiteOfTests = new TestSuite("BHandler::IsWatched");

        ADD_TEST4(BHandler, SuiteOfTests, TIsWatchedTest, IsWatched1);
        ADD_TEST4(BHandler, SuiteOfTests, TIsWatchedTest, IsWatched2);
        ADD_TEST4(BHandler, SuiteOfTests, TIsWatchedTest, IsWatched3);
        ADD_TEST4(BHandler, SuiteOfTests, TIsWatchedTest, IsWatched4);
        ADD_TEST4(BHandler, SuiteOfTests, TIsWatchedTest, IsWatched5);

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

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