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