1//------------------------------------------------------------------------------ 2// RemoveHandlerTest.cpp 3// 4//------------------------------------------------------------------------------ 5 6// Standard Includes ----------------------------------------------------------- 7 8// System Includes ------------------------------------------------------------- 9#include <Handler.h> 10#include <Looper.h> 11#include <MessageFilter.h> 12 13// Project Includes ------------------------------------------------------------ 14 15// Local Includes -------------------------------------------------------------- 16#include "RemoveHandlerTest.h" 17 18// Local Defines --------------------------------------------------------------- 19 20// Globals --------------------------------------------------------------------- 21 22//------------------------------------------------------------------------------ 23/** 24 RemoveHandler(BHandler* handler) 25 @case handler is NULL 26 @param handler NULL 27 @results RemoveHandler() returns false. R5 implementation seg faults; 28 we've fixed that. 29 */ 30void TRemoveHandlerTest::RemoveHandler1() 31{ 32 BLooper Looper; 33#ifndef TEST_R5 34 CPPUNIT_ASSERT(!Looper.RemoveHandler(NULL)); 35#endif 36} 37//------------------------------------------------------------------------------ 38/** 39 RemoveHandler(BHandler* handler) 40 @case handler doesn't belong to this looper 41 @param handler Valid BHandler pointer, not assigned to looper 42 @results 43 */ 44void TRemoveHandlerTest::RemoveHandler2() 45{ 46 BLooper Looper; 47 BHandler Handler; 48 CPPUNIT_ASSERT(!Looper.RemoveHandler(&Handler)); 49} 50//------------------------------------------------------------------------------ 51/** 52 RemoveHandler(BHandler* handler) 53 @case handler is valid, looper is unlocked 54 @param handler Valid BHandler pointer, assigned to looper 55 @results goes to debugger, but removes handler anyway 56 */ 57void TRemoveHandlerTest::RemoveHandler3() 58{ 59 DEBUGGER_ESCAPE; 60 61 BLooper Looper; 62 BHandler Handler; 63 Looper.AddHandler(&Handler); 64 Looper.Unlock(); 65 CPPUNIT_ASSERT(Looper.RemoveHandler(&Handler)); 66} 67//------------------------------------------------------------------------------ 68/** 69 RemoveHandler(BHandler* handler) 70 @case handler doesn't belong to this looper, looper is unlocked 71 @param handler Valid BHandler pointer, not assigned to looper 72 @results 73 */ 74void TRemoveHandlerTest::RemoveHandler4() 75{ 76 DEBUGGER_ESCAPE; 77 78 BLooper Looper; 79 BHandler Handler; 80 Looper.Unlock(); 81 CPPUNIT_ASSERT(!Looper.RemoveHandler(&Handler)); 82} 83//------------------------------------------------------------------------------ 84/** 85 RemoveHandler(BHandler* handler) 86 @case Valid looper and handler; handler has filters 87 @param handler Valid BHandler pointer 88 @results RemoveHandler() returns true 89 handler->FilterList() returns NULL after removal 90 */ 91void TRemoveHandlerTest::RemoveHandler5() 92{ 93 BLooper Looper; 94 BHandler Handler; 95 BMessageFilter* MessageFilter = new BMessageFilter('1234'); 96 97 Handler.AddFilter(MessageFilter); 98 Looper.AddHandler(&Handler); 99 CPPUNIT_ASSERT(Looper.RemoveHandler(&Handler)); 100 CPPUNIT_ASSERT(Handler.FilterList()); 101} 102//------------------------------------------------------------------------------ 103Test* TRemoveHandlerTest::Suite() 104{ 105 TestSuite* suite = new TestSuite("BLooper::RemoveHandler(BHandler* handler)"); 106 107 ADD_TEST4(BLooper, suite, TRemoveHandlerTest, RemoveHandler1); 108 ADD_TEST4(BLooper, suite, TRemoveHandlerTest, RemoveHandler2); 109 ADD_TEST4(BLooper, suite, TRemoveHandlerTest, RemoveHandler3); 110 ADD_TEST4(BLooper, suite, TRemoveHandlerTest, RemoveHandler4); 111 ADD_TEST4(BLooper, suite, TRemoveHandlerTest, RemoveHandler5); 112 113 return suite; 114} 115//------------------------------------------------------------------------------ 116 117/* 118 * $Log $ 119 * 120 * $Id $ 121 * 122 */ 123 124 125