1//------------------------------------------------------------------------------
2//	RemoveFilterTest.cpp
3//
4//------------------------------------------------------------------------------
5
6// Standard Includes -----------------------------------------------------------
7
8// System Includes -------------------------------------------------------------
9#include <Looper.h>
10#include <MessageFilter.h>
11
12// Project Includes ------------------------------------------------------------
13
14// Local Includes --------------------------------------------------------------
15#include "RemoveFilterTest.h"
16
17// Local Defines ---------------------------------------------------------------
18
19// Globals ---------------------------------------------------------------------
20
21//------------------------------------------------------------------------------
22/**
23	RemoveFilter(BMessageFilter* filter)
24	@case			filter is NULL
25	@param	filter	NULL
26	@results		Returns false
27 */
28void TRemoveFilterTest::RemoveFilter1()
29{
30	BHandler Handler;
31	CPPUNIT_ASSERT(!Handler.RemoveFilter(NULL));
32}
33//------------------------------------------------------------------------------
34/**
35	RemoveFilter(BMessageFilter* filter)
36	@case			filter is valid, handler has no looper
37	@param	filter	Valid BMessageFilter pointer
38	@results		Returns true.  Contrary to documentation, original
39					implementation of BHandler doesn't care if it belongs to a
40					looper or not.
41 */
42void TRemoveFilterTest::RemoveFilter2()
43{
44	BHandler Handler;
45	BMessageFilter* Filter = new BMessageFilter('1234');
46	Handler.AddFilter(Filter);
47	CPPUNIT_ASSERT(Handler.RemoveFilter(Filter));
48}
49//------------------------------------------------------------------------------
50/**
51	RemoveFilter(BMessageFilter* filter)
52	@case			filter is valid, handler has looper, looper isn't locked
53	@param	filter	Valid BMessageFilter pointer
54	@results		Returns true.  Contrary to documentation, original
55					implementation of BHandler doesn't care if it belongs to a
56					looper or not.
57 */
58void TRemoveFilterTest::RemoveFilter3()
59{
60	BLooper Looper;
61	BHandler Handler;
62	Looper.AddHandler(&Handler);
63	BMessageFilter* Filter = new BMessageFilter('1234');
64	Handler.AddFilter(Filter);
65	CPPUNIT_ASSERT(Handler.RemoveFilter(Filter));
66}
67//------------------------------------------------------------------------------
68/**
69	RemoveFilter(BMessageFilter* filter)
70	@case			filter is valid, handler has looper, looper is locked
71	@param	filter	Valid BMessageFilter pointer
72	@results		Return true.
73 */
74void TRemoveFilterTest::RemoveFilter4()
75{
76	BLooper Looper;
77	BHandler Handler;
78	Looper.AddHandler(&Handler);
79	Looper.Lock();
80	BMessageFilter* Filter = new BMessageFilter('1234');
81	Handler.AddFilter(Filter);
82	CPPUNIT_ASSERT(Handler.RemoveFilter(Filter));
83}
84//------------------------------------------------------------------------------
85/**
86	RemoveFilter(BMessageFilter* filter)
87	@case			filter is valid, but not owned by handler, handler has no looper
88	@param	filter	Valid BMessageFilter pointer
89	@results		Returns false.  Contrary to documentation, original
90					implementation of BHandler doesn't care if it belongs to a
91					looper or not.
92 */
93void TRemoveFilterTest::RemoveFilter5()
94{
95	BHandler Handler;
96	BMessageFilter* Filter = new BMessageFilter('1234');
97	CPPUNIT_ASSERT(!Handler.RemoveFilter(Filter));
98}
99//------------------------------------------------------------------------------
100/**
101	RemoveFilter(BMessageFilter* filter)
102	@case			filter is valid, but not owned by handler, handler has
103					looper, looper isn't locked
104	@param	filter	Valid BMessageFilter pointer
105	@results		Returns false.  Contrary to documentation, original
106					implementation of BHandler doesn't care if its looper is
107					locked or not.
108 */
109void TRemoveFilterTest::RemoveFilter6()
110{
111	BLooper Looper;
112	BHandler Handler;
113	Looper.AddHandler(&Handler);
114	BMessageFilter* Filter = new BMessageFilter('1234');
115	CPPUNIT_ASSERT(!Handler.RemoveFilter(Filter));
116}
117//------------------------------------------------------------------------------
118/**
119	RemoveFilter(BMessageFilter* filter)
120	@case			filter is valid, but not owned by handler, handler has
121					looper, looper is locked
122	@param	filter	Valid BMessageFilter pointer
123	@results		Returns false.
124 */
125void TRemoveFilterTest::RemoveFilter7()
126{
127	BLooper Looper;
128	BHandler Handler;
129	Looper.AddHandler(&Handler);
130	Looper.Lock();
131	BMessageFilter* Filter = new BMessageFilter('1234');
132	CPPUNIT_ASSERT(!Handler.RemoveFilter(Filter));
133}
134//------------------------------------------------------------------------------
135Test* TRemoveFilterTest::Suite()
136{
137	TestSuite* SuiteOfTests = new TestSuite("BHandler::RemoveFilter");
138
139	ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter1);
140	ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter2);
141	ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter3);
142	ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter4);
143	ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter5);
144	ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter6);
145	ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter7);
146
147	return SuiteOfTests;
148}
149//------------------------------------------------------------------------------
150
151/*
152 * $Log $
153 *
154 * $Id  $
155 *
156 */
157
158
159