xref: /haiku/src/tests/kits/app/bhandler/BHandlerTester.cpp (revision e8b9c0e1a69fe9463b06fa1a10105480d38b55ea)
152a38012Sejakowatz //------------------------------------------------------------------------------
252a38012Sejakowatz //	BHandlerTester.cpp
352a38012Sejakowatz //
452a38012Sejakowatz //------------------------------------------------------------------------------
552a38012Sejakowatz 
652a38012Sejakowatz // Standard Includes -----------------------------------------------------------
752a38012Sejakowatz 
852a38012Sejakowatz // System Includes -------------------------------------------------------------
976a5f348Sbeveloper #include <Message.h>
1076a5f348Sbeveloper #include <OS.h>
1152a38012Sejakowatz #include <Handler.h>
1276a5f348Sbeveloper #include <Looper.h>
1352a38012Sejakowatz #include <MessageFilter.h>
1452a38012Sejakowatz 
1552a38012Sejakowatz // Project Includes ------------------------------------------------------------
1652a38012Sejakowatz 
1752a38012Sejakowatz // Local Includes --------------------------------------------------------------
1852a38012Sejakowatz #include "BHandlerTester.h"
1952a38012Sejakowatz #include "LockLooperTestCommon.h"
2052a38012Sejakowatz // Local Defines ---------------------------------------------------------------
2152a38012Sejakowatz 
2252a38012Sejakowatz // Globals ---------------------------------------------------------------------
2352a38012Sejakowatz 
2452a38012Sejakowatz //------------------------------------------------------------------------------
2552a38012Sejakowatz /**
2652a38012Sejakowatz 	BHandler(const char* name)
2752a38012Sejakowatz 	@case			Construct with NULL name
2852a38012Sejakowatz 	@param	name	NULL
2952a38012Sejakowatz 	@results		BHandler::Name() should return NULL
3052a38012Sejakowatz  */
BHandler1()3152a38012Sejakowatz void TBHandlerTester::BHandler1()
3252a38012Sejakowatz {
3352a38012Sejakowatz 	BHandler Handler((const char*)NULL);
34abb57933Sejakowatz 	CPPUNIT_ASSERT(Handler.Name() == NULL);
3552a38012Sejakowatz }
3652a38012Sejakowatz //------------------------------------------------------------------------------
3752a38012Sejakowatz /**
3852a38012Sejakowatz 	BHandler(const char* name)
3952a38012Sejakowatz 	@case			Construct with valid name
4052a38012Sejakowatz 	@param	name	valid string
4152a38012Sejakowatz 	@results		BHandler::Name() returns name
4252a38012Sejakowatz  */
BHandler2()4352a38012Sejakowatz void TBHandlerTester::BHandler2()
4452a38012Sejakowatz {
4552a38012Sejakowatz 	BHandler Handler("name");
46abb57933Sejakowatz 	CPPUNIT_ASSERT(string("name") == Handler.Name());
4752a38012Sejakowatz }
4852a38012Sejakowatz //------------------------------------------------------------------------------
4952a38012Sejakowatz /**
5052a38012Sejakowatz 	BHandler(BMessage* archive)
5152a38012Sejakowatz 	@case			archive is valid and has field "_name"
5252a38012Sejakowatz 	@param	archive	valid BMessage pointer
5352a38012Sejakowatz 	@results		BHandler::Name() returns _name
5452a38012Sejakowatz  */
BHandler3()5552a38012Sejakowatz void TBHandlerTester::BHandler3()
5652a38012Sejakowatz {
5752a38012Sejakowatz 	BMessage Archive;
5852a38012Sejakowatz 	Archive.AddString("_name", "the name");
5952a38012Sejakowatz 	BHandler Handler(&Archive);
60abb57933Sejakowatz 	CPPUNIT_ASSERT(string("the name") == Handler.Name());
6152a38012Sejakowatz }
6252a38012Sejakowatz //------------------------------------------------------------------------------
6352a38012Sejakowatz /**
6452a38012Sejakowatz 	BHandler(BMessage* archive)
6552a38012Sejakowatz 	@case			archive is valid, but has no field "_name"
6652a38012Sejakowatz 	@param	archive	valid BMessage pointer
6752a38012Sejakowatz 	@results		BHandler::Name() returns NULL
6852a38012Sejakowatz  */
BHandler4()6952a38012Sejakowatz void TBHandlerTester::BHandler4()
7052a38012Sejakowatz {
7152a38012Sejakowatz 	BMessage Archive;
7252a38012Sejakowatz 	BHandler Handler(&Archive);
73abb57933Sejakowatz 	CPPUNIT_ASSERT(Handler.Name() == NULL);
7452a38012Sejakowatz }
7552a38012Sejakowatz //------------------------------------------------------------------------------
7652a38012Sejakowatz /**
7752a38012Sejakowatz 	BHandler(BMessage* archive)
7852a38012Sejakowatz 	@case			archive is NULL
7952a38012Sejakowatz 	@param	archive	NULL
8052a38012Sejakowatz 	@results		BHandler::Name() returns NULL
8152a38012Sejakowatz 	@note			This test is not enabled against the original implementation
8252a38012Sejakowatz 					as it doesn't check for a NULL parameter and seg faults.
8352a38012Sejakowatz  */
8452a38012Sejakowatz 
BHandler5()8552a38012Sejakowatz void TBHandlerTester::BHandler5()
8652a38012Sejakowatz {
8752a38012Sejakowatz #if !defined(TEST_R5)
8852a38012Sejakowatz 	BHandler Handler((BMessage*)NULL);
89abb57933Sejakowatz 	CPPUNIT_ASSERT(Handler.Name() == NULL);
9052a38012Sejakowatz #endif
9152a38012Sejakowatz }
9252a38012Sejakowatz //------------------------------------------------------------------------------
9352a38012Sejakowatz /**
9452a38012Sejakowatz 	Archive(BMessage* data, bool deep = true)
9552a38012Sejakowatz 	@case			data is NULL, deep is false
9652a38012Sejakowatz 	@param	data	NULL
9752a38012Sejakowatz 	@param	deep	false
9852a38012Sejakowatz 	@results		Returns B_BAD_VALUE
9952a38012Sejakowatz 	@note			This test is not enabled against the original implementation
10052a38012Sejakowatz 					as it doesn't check for NULL parameters and seg faults
10152a38012Sejakowatz  */
Archive1()10252a38012Sejakowatz void TBHandlerTester::Archive1()
10352a38012Sejakowatz {
10452a38012Sejakowatz #if !defined(TEST_R5)
10552a38012Sejakowatz 	BHandler Handler;
106abb57933Sejakowatz 	CPPUNIT_ASSERT(Handler.Archive(NULL, false) == B_BAD_VALUE);
10752a38012Sejakowatz #endif
10852a38012Sejakowatz }
10952a38012Sejakowatz //------------------------------------------------------------------------------
11052a38012Sejakowatz /**
11152a38012Sejakowatz 	Archive(BMessage* data, bool deep = true)
11252a38012Sejakowatz 	@case			data is NULL, deep is true
11352a38012Sejakowatz 	@param	data	NULL
11452a38012Sejakowatz 	@param	deep	false
11552a38012Sejakowatz 	@results		Returns B_BAD_VALUE
11652a38012Sejakowatz 	@note			This test is not enabled against the original implementation
11752a38012Sejakowatz 					as it doesn't check for NULL parameters and seg faults
11852a38012Sejakowatz  */
Archive2()11952a38012Sejakowatz void TBHandlerTester::Archive2()
12052a38012Sejakowatz {
12152a38012Sejakowatz #if !defined(TEST_R5)
12252a38012Sejakowatz 	BHandler Handler;
123abb57933Sejakowatz 	CPPUNIT_ASSERT(Handler.Archive(NULL) == B_BAD_VALUE);
12452a38012Sejakowatz #endif
12552a38012Sejakowatz }
12652a38012Sejakowatz //------------------------------------------------------------------------------
12752a38012Sejakowatz /**
12852a38012Sejakowatz 	Archive(BMessage* data, bool deep = true)
12952a38012Sejakowatz 	@case			data is valid, deep is false
13052a38012Sejakowatz 	@param	data	valid BMessage pointer
13152a38012Sejakowatz 	@param	deep	false
13252a38012Sejakowatz 	@results		Returns B_OK
13352a38012Sejakowatz 					Resultant archive has string field labeled "_name"
13452a38012Sejakowatz 					Field "_name" contains the string "a name"
13552a38012Sejakowatz 					Resultant archive has string field labeled "class"
13652a38012Sejakowatz 					Field "class" contains the string "BHandler"
13752a38012Sejakowatz  */
Archive3()13852a38012Sejakowatz void TBHandlerTester::Archive3()
13952a38012Sejakowatz {
14052a38012Sejakowatz 	BMessage Archive;
14152a38012Sejakowatz 	BHandler Handler("a name");
142abb57933Sejakowatz 	CPPUNIT_ASSERT(Handler.Archive(&Archive, false) == B_OK);
14352a38012Sejakowatz 
14452a38012Sejakowatz 	const char* data;
145abb57933Sejakowatz 	CPPUNIT_ASSERT(Archive.FindString("_name", &data) == B_OK);
146abb57933Sejakowatz 	CPPUNIT_ASSERT(string("a name") == data);
147abb57933Sejakowatz 	CPPUNIT_ASSERT(Archive.FindString("class", &data) == B_OK);
148abb57933Sejakowatz 	CPPUNIT_ASSERT(string("BHandler") == data);
14952a38012Sejakowatz }
15052a38012Sejakowatz //------------------------------------------------------------------------------
15152a38012Sejakowatz /**
15252a38012Sejakowatz 	Archive(BMessage *data, bool deep = true)
15352a38012Sejakowatz 	@case			data is valid, deep is true
15452a38012Sejakowatz 	@param	data	valid BMessage pointer
15552a38012Sejakowatz 	@param	deep	true
15652a38012Sejakowatz 	@results		Returns B_OK
15752a38012Sejakowatz 					Resultant archive has string field labeled "_name"
15852a38012Sejakowatz 					Field "_name" contains the string "a name"
15952a38012Sejakowatz 					Resultant archive has string field labeled "class"
16052a38012Sejakowatz 					Field "class" contains the string "BHandler"
16152a38012Sejakowatz  */
Archive4()16252a38012Sejakowatz void TBHandlerTester::Archive4()
16352a38012Sejakowatz {
16452a38012Sejakowatz 	BMessage Archive;
16552a38012Sejakowatz 	BHandler Handler("another name");
166abb57933Sejakowatz 	CPPUNIT_ASSERT(Handler.Archive(&Archive) == B_OK);
16752a38012Sejakowatz 
16852a38012Sejakowatz 	const char* data;
169abb57933Sejakowatz 	CPPUNIT_ASSERT(Archive.FindString("_name", &data) == B_OK);
170abb57933Sejakowatz 	CPPUNIT_ASSERT(string("another name") == data);
171abb57933Sejakowatz 	CPPUNIT_ASSERT(Archive.FindString("class", &data) == B_OK);
172abb57933Sejakowatz 	CPPUNIT_ASSERT(string("BHandler") == data);
17352a38012Sejakowatz }
17452a38012Sejakowatz //------------------------------------------------------------------------------
17552a38012Sejakowatz /**
17652a38012Sejakowatz 	Instantiate(BMessage* data)
17752a38012Sejakowatz 	@case			data is NULL
17852a38012Sejakowatz 	@param	data	NULL
17952a38012Sejakowatz 	@results
18052a38012Sejakowatz 	@note			This test is not enabled against the original implementation
18152a38012Sejakowatz 					as it doesn't check for NULL parameters and seg faults
18252a38012Sejakowatz  */
Instantiate1()18352a38012Sejakowatz void TBHandlerTester::Instantiate1()
18452a38012Sejakowatz {
18552a38012Sejakowatz #if !defined(TEST_R5)
186abb57933Sejakowatz 	CPPUNIT_ASSERT(BHandler::Instantiate(NULL) == NULL);
187abb57933Sejakowatz 	CPPUNIT_ASSERT(errno == B_BAD_VALUE);
18852a38012Sejakowatz #endif
18952a38012Sejakowatz }
19052a38012Sejakowatz //------------------------------------------------------------------------------
19152a38012Sejakowatz /**
19252a38012Sejakowatz 	Instantiate(BMessage* data)
19352a38012Sejakowatz 	@case			data is valid, has field "_name"
19452a38012Sejakowatz 	@param	data	Valid BMessage pointer with string field "class" containing
19552a38012Sejakowatz 					string "BHandler" and with string field "_name" containing
19652a38012Sejakowatz 					string "a name"
19752a38012Sejakowatz 	@results		BHandler::Name() returns "a name"
19852a38012Sejakowatz  */
Instantiate2()19952a38012Sejakowatz void TBHandlerTester::Instantiate2()
20052a38012Sejakowatz {
20152a38012Sejakowatz 	BMessage Archive;
20252a38012Sejakowatz 	Archive.AddString("class", "BHandler");
20352a38012Sejakowatz 	Archive.AddString("_name", "a name");
20452a38012Sejakowatz 
20552a38012Sejakowatz 	BHandler* Handler =
20652a38012Sejakowatz 		dynamic_cast<BHandler*>(BHandler::Instantiate(&Archive));
207abb57933Sejakowatz 	CPPUNIT_ASSERT(Handler != NULL);
208abb57933Sejakowatz 	CPPUNIT_ASSERT(string("a name") == Handler->Name());
209abb57933Sejakowatz 	CPPUNIT_ASSERT(errno == B_OK);
21052a38012Sejakowatz }
21152a38012Sejakowatz //------------------------------------------------------------------------------
21252a38012Sejakowatz /**
21352a38012Sejakowatz 	Instantiate(BMessage *data)
21452a38012Sejakowatz 	@case			data is valid, has no field "_name"
21552a38012Sejakowatz 	@param	data	valid BMessage pointer with string field "class" containing
21652a38012Sejakowatz 					string "BHandler"
21752a38012Sejakowatz 	@results		BHandler::Name() returns NULL
21852a38012Sejakowatz  */
21952a38012Sejakowatz 
Instantiate3()22052a38012Sejakowatz void TBHandlerTester::Instantiate3()
22152a38012Sejakowatz {
22252a38012Sejakowatz 	BMessage Archive;
22352a38012Sejakowatz 	Archive.AddString("class", "BHandler");
22452a38012Sejakowatz 
22552a38012Sejakowatz 	BHandler* Handler =
22652a38012Sejakowatz 		dynamic_cast<BHandler*>(BHandler::Instantiate(&Archive));
227abb57933Sejakowatz 	CPPUNIT_ASSERT(Handler != NULL);
228abb57933Sejakowatz 	CPPUNIT_ASSERT(Handler->Name() == NULL);
229abb57933Sejakowatz 	CPPUNIT_ASSERT(errno == B_OK);
23052a38012Sejakowatz }
23152a38012Sejakowatz //------------------------------------------------------------------------------
23252a38012Sejakowatz /**
23352a38012Sejakowatz 	SetName(const char* name)
23452a38012Sejakowatz 	Name()
23552a38012Sejakowatz 	@case			name is NULL
23652a38012Sejakowatz 	@param	name	NULL
23752a38012Sejakowatz 	@results		BHandler::Name() returns NULL
23852a38012Sejakowatz 
23952a38012Sejakowatz  */
SetName1()24052a38012Sejakowatz void TBHandlerTester::SetName1()
24152a38012Sejakowatz {
24252a38012Sejakowatz 	BHandler Handler("a name");
243abb57933Sejakowatz 	CPPUNIT_ASSERT(string("a name") == Handler.Name());
24452a38012Sejakowatz 
24552a38012Sejakowatz 	Handler.SetName(NULL);
246abb57933Sejakowatz 	CPPUNIT_ASSERT(Handler.Name() == NULL);
24752a38012Sejakowatz }
24852a38012Sejakowatz //------------------------------------------------------------------------------
24952a38012Sejakowatz /**
25052a38012Sejakowatz 	SetName(const char *name)
25152a38012Sejakowatz 	Name()
25252a38012Sejakowatz 	@case			name is valid
25352a38012Sejakowatz 	@param	name	Valid string pointer
25452a38012Sejakowatz 	@results		BHandler::Name returns name
25552a38012Sejakowatz  */
SetName2()25652a38012Sejakowatz void TBHandlerTester::SetName2()
25752a38012Sejakowatz {
25852a38012Sejakowatz 	BHandler Handler("a name");
259abb57933Sejakowatz 	CPPUNIT_ASSERT(string("a name") == Handler.Name());
26052a38012Sejakowatz 
26152a38012Sejakowatz 	Handler.SetName("another name");
262abb57933Sejakowatz 	CPPUNIT_ASSERT(string("another name") == Handler.Name());
26352a38012Sejakowatz }
26452a38012Sejakowatz //------------------------------------------------------------------------------
26552a38012Sejakowatz /**
26652a38012Sejakowatz 	Perform(perform_code d, void *arg)
267*e8b9c0e1SKyle Ambroff-Kao 	@case		feed meaningless data, should return B_NAME_NOT_FOUND
26852a38012Sejakowatz 	@param	d	N/A
26952a38012Sejakowatz 	@param	arg	NULL
270*e8b9c0e1SKyle Ambroff-Kao 	@results	Returns B_NAME_NOT_FOUND
27152a38012Sejakowatz  */
Perform1()27252a38012Sejakowatz void TBHandlerTester::Perform1()
27352a38012Sejakowatz {
27452a38012Sejakowatz 	BHandler Handler;
275*e8b9c0e1SKyle Ambroff-Kao 	CPPUNIT_ASSERT(Handler.Perform(0, NULL) == B_NAME_NOT_FOUND);
27652a38012Sejakowatz }
27752a38012Sejakowatz //------------------------------------------------------------------------------
27852a38012Sejakowatz /**
27952a38012Sejakowatz 	FilterList();
28052a38012Sejakowatz 	@case		Default constructed BHandler
28152a38012Sejakowatz 	@results	FilterList() returns NULL
28252a38012Sejakowatz  */
FilterList1()28352a38012Sejakowatz void TBHandlerTester::FilterList1()
28452a38012Sejakowatz {
28552a38012Sejakowatz 	BHandler Handler;
286abb57933Sejakowatz 	CPPUNIT_ASSERT(!Handler.FilterList());
28752a38012Sejakowatz }
28852a38012Sejakowatz //------------------------------------------------------------------------------
Suite()28952a38012Sejakowatz Test* TBHandlerTester::Suite()
29052a38012Sejakowatz {
29152a38012Sejakowatz 	TestSuite* SuiteOfTests = new TestSuite;
29252a38012Sejakowatz 
293be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler1);
294be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler2);
295be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler3);
296be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler4);
297be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler5);
29852a38012Sejakowatz 
299be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Archive1);
300be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Archive2);
301be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Archive3);
302be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Archive4);
30352a38012Sejakowatz 
304be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Instantiate1);
305be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Instantiate2);
306be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Instantiate3);
30752a38012Sejakowatz 
308be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, SetName1);
309be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, SetName2);
31052a38012Sejakowatz 
311be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Perform1);
31252a38012Sejakowatz 
313be2939caSTyler Dauwalder 	ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, FilterList1);
31452a38012Sejakowatz 
31552a38012Sejakowatz 	return SuiteOfTests;
31652a38012Sejakowatz }
31752a38012Sejakowatz //------------------------------------------------------------------------------
31852a38012Sejakowatz 
31952a38012Sejakowatz /*
32052a38012Sejakowatz  * $Log $
32152a38012Sejakowatz  *
32252a38012Sejakowatz  * $Id  $
32352a38012Sejakowatz  *
32452a38012Sejakowatz  */
32552a38012Sejakowatz 
326be2939caSTyler Dauwalder 
327be2939caSTyler Dauwalder 
328