1//------------------------------------------------------------------------------
2//	AddCommonFilterTest.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 "AddCommonFilterTest.h"
16
17// Local Defines ---------------------------------------------------------------
18
19// Globals ---------------------------------------------------------------------
20
21//------------------------------------------------------------------------------
22/**
23	AddCommonFilter(BMessageFilter* filter)
24	@case		NULL filter
25	@param		filter is NULL
26	@results	none
27	@note		R5 chokes on this test; doesn't param check, apparently.
28 */
29void TAddCommonFilterTest::AddCommonFilterTest1()
30{
31#ifndef TEST_R5
32	BLooper Looper;
33	Looper.AddCommonFilter(NULL);
34#endif
35}
36//------------------------------------------------------------------------------
37/**
38	AddCommonFilter(BMessageFilter* filter)
39	@case		Valid filter, looper not locked
40	@param		Valid BMessageFilter pointer
41	@results	Debugger message "Owning Looper must be locked before calling
42				AddCommonFilter".  Also, since internal filter list construction
43				is delayed until a filter is added, CommonFilterList() should
44				return NULL.
45 */
46void TAddCommonFilterTest::AddCommonFilterTest2()
47{
48	DEBUGGER_ESCAPE;
49
50	BLooper Looper;
51	Looper.Unlock();
52	BMessageFilter* Filter = new BMessageFilter('1234');
53	Looper.AddCommonFilter(Filter);
54	CPPUNIT_ASSERT(Looper.CommonFilterList() == NULL);
55}
56//------------------------------------------------------------------------------
57/**
58	AddCommonFilter(BMessageFilter* filter)
59	@case		Valid filter, looper locked
60	@param		Valid BMessageFilter pointer
61	@results	Filter is successfully added to the common filter list
62 */
63void TAddCommonFilterTest::AddCommonFilterTest3()
64{
65	BLooper Looper;
66	BMessageFilter* Filter = new BMessageFilter('1234');
67	Looper.AddCommonFilter(Filter);
68	CPPUNIT_ASSERT(Looper.CommonFilterList()->HasItem(Filter));
69}
70//------------------------------------------------------------------------------
71/**
72	AddCommonFilter(BMessageFilter* filter)
73	@case		Valid filter, looper locked, owned by another looper
74	@param		Valid BMessageFilter pointer
75	@results	Debugger message "A MessageFilter can only be used once."  Also,
76				since internal filter list construction is delayed until a
77				filter is added, Looper2.CommonFilterList() should return NULL.
78 */
79void TAddCommonFilterTest::AddCommonFilterTest4()
80{
81	DEBUGGER_ESCAPE;
82
83	BLooper Looper1;
84	BLooper Looper2;
85	BMessageFilter* Filter = new BMessageFilter('1234');
86	Looper1.AddCommonFilter(Filter);
87	CPPUNIT_ASSERT(Looper1.CommonFilterList()->HasItem(Filter));
88	Looper2.AddCommonFilter(Filter);
89	CPPUNIT_ASSERT(Looper2.CommonFilterList() == NULL);
90}
91//------------------------------------------------------------------------------
92#ifdef ADD_TEST
93#undef ADD_TEST
94#endif
95#define ADD_TEST(__test_name__)	\
96	ADD_TEST4(BLooper, suite, TAddCommonFilterTest, __test_name__);
97TestSuite* TAddCommonFilterTest::Suite()
98{
99	TestSuite* suite =
100		new TestSuite("BLooper::AddCommonFilter(BMessageFilter*)");
101
102	ADD_TEST(AddCommonFilterTest1);
103	ADD_TEST(AddCommonFilterTest2);
104	ADD_TEST(AddCommonFilterTest3);
105	ADD_TEST(AddCommonFilterTest4);
106
107	return suite;
108}
109//------------------------------------------------------------------------------
110
111/*
112 * $Log $
113 *
114 * $Id  $
115 *
116 */
117
118