xref: /haiku/src/tests/kits/app/blooper/HandlerAtTest.cpp (revision cbe0a0c436162d78cc3f92a305b64918c839d079)
1 //------------------------------------------------------------------------------
2 //	HandlerAtTest.cpp
3 //
4 //------------------------------------------------------------------------------
5 
6 // Standard Includes -----------------------------------------------------------
7 
8 // System Includes -------------------------------------------------------------
9 #include <Handler.h>
10 #include <Looper.h>
11 
12 // Project Includes ------------------------------------------------------------
13 
14 // Local Includes --------------------------------------------------------------
15 #include "HandlerAtTest.h"
16 
17 // Local Defines ---------------------------------------------------------------
18 
19 // Globals ---------------------------------------------------------------------
20 
21 //------------------------------------------------------------------------------
22 /**
23 	HandlerAt(int32 index)
24 	@case		No handlers added, check for looper itself
25 	@param		index	0
26 	@results	HandlerAt() returns pointer to Looper.
27  */
28 void THandlerAtTest::HandlerAtTest1()
29 {
30 	BLooper Looper;
31 	CPPUNIT_ASSERT(Looper.HandlerAt(0) == &Looper);
32 }
33 //------------------------------------------------------------------------------
34 /**
35 	HandlerAt(int32 index)
36 	@case		Index out of range (CountHandlers() + 1)
37 	@param		index	1 & -1
38 	@results	HandlerAt() returns NULL
39  */
40 void THandlerAtTest::HandlerAtTest2()
41 {
42 	BLooper Looper;
43 	CPPUNIT_ASSERT(Looper.HandlerAt(1) == NULL);
44 	CPPUNIT_ASSERT(Looper.HandlerAt(-1) == NULL);
45 }
46 //------------------------------------------------------------------------------
47 /**
48 	HandlerAt(int32 index)
49 	@case		Several handlers added, checked against expected indices
50 	@param		index	Various
51 	@results
52  */
53 #define CREATE_AND_ADD(XHANDLER)	\
54 	BHandler XHANDLER;				\
55 	Looper.AddHandler(&XHANDLER);
56 void THandlerAtTest::HandlerAtTest3()
57 {
58 	BLooper Looper;
59 	CREATE_AND_ADD(Handler1);
60 	CREATE_AND_ADD(Handler2);
61 	CREATE_AND_ADD(Handler3);
62 
63 	CPPUNIT_ASSERT(Looper.HandlerAt(0) == &Looper);
64 	CPPUNIT_ASSERT(Looper.HandlerAt(1) == &Handler1);
65 	CPPUNIT_ASSERT(Looper.HandlerAt(2) == &Handler2);
66 	CPPUNIT_ASSERT(Looper.HandlerAt(3) == &Handler3);
67 }
68 //------------------------------------------------------------------------------
69 /**
70 	HandlerAt(int32 index)
71 	@case		Looper is not locked
72 	@param		index	0
73 	@results
74  */
75 void THandlerAtTest::HandlerAtTest4()
76 {
77 	DEBUGGER_ESCAPE;
78 
79 	BLooper Looper;
80 	Looper.Unlock();
81 	CPPUNIT_ASSERT(Looper.HandlerAt(0) == &Looper);
82 }
83 //------------------------------------------------------------------------------
84 TestSuite* THandlerAtTest::Suite()
85 {
86 	TestSuite* suite = new TestSuite("BLooper::HandlerAt(int32)");
87 
88 	ADD_TEST4(BLooper, suite, THandlerAtTest, HandlerAtTest1);
89 	ADD_TEST4(BLooper, suite, THandlerAtTest, HandlerAtTest2);
90 	ADD_TEST4(BLooper, suite, THandlerAtTest, HandlerAtTest3);
91 	ADD_TEST4(BLooper, suite, THandlerAtTest, HandlerAtTest4);
92 
93 	return suite;
94 }
95 //------------------------------------------------------------------------------
96 
97 /*
98  * $Log $
99  *
100  * $Id  $
101  *
102  */
103 
104 
105