1//------------------------------------------------------------------------------ 2// BHandlerTester.cpp 3// 4//------------------------------------------------------------------------------ 5 6// Standard Includes ----------------------------------------------------------- 7 8// System Includes ------------------------------------------------------------- 9#include <Message.h> 10#include <OS.h> 11#include <Handler.h> 12#include <Looper.h> 13#include <MessageFilter.h> 14 15// Project Includes ------------------------------------------------------------ 16 17// Local Includes -------------------------------------------------------------- 18#include "BHandlerTester.h" 19#include "LockLooperTestCommon.h" 20// Local Defines --------------------------------------------------------------- 21 22// Globals --------------------------------------------------------------------- 23 24//------------------------------------------------------------------------------ 25/** 26 BHandler(const char* name) 27 @case Construct with NULL name 28 @param name NULL 29 @results BHandler::Name() should return NULL 30 */ 31void TBHandlerTester::BHandler1() 32{ 33 BHandler Handler((const char*)NULL); 34 CPPUNIT_ASSERT(Handler.Name() == NULL); 35} 36//------------------------------------------------------------------------------ 37/** 38 BHandler(const char* name) 39 @case Construct with valid name 40 @param name valid string 41 @results BHandler::Name() returns name 42 */ 43void TBHandlerTester::BHandler2() 44{ 45 BHandler Handler("name"); 46 CPPUNIT_ASSERT(string("name") == Handler.Name()); 47} 48//------------------------------------------------------------------------------ 49/** 50 BHandler(BMessage* archive) 51 @case archive is valid and has field "_name" 52 @param archive valid BMessage pointer 53 @results BHandler::Name() returns _name 54 */ 55void TBHandlerTester::BHandler3() 56{ 57 BMessage Archive; 58 Archive.AddString("_name", "the name"); 59 BHandler Handler(&Archive); 60 CPPUNIT_ASSERT(string("the name") == Handler.Name()); 61} 62//------------------------------------------------------------------------------ 63/** 64 BHandler(BMessage* archive) 65 @case archive is valid, but has no field "_name" 66 @param archive valid BMessage pointer 67 @results BHandler::Name() returns NULL 68 */ 69void TBHandlerTester::BHandler4() 70{ 71 BMessage Archive; 72 BHandler Handler(&Archive); 73 CPPUNIT_ASSERT(Handler.Name() == NULL); 74} 75//------------------------------------------------------------------------------ 76/** 77 BHandler(BMessage* archive) 78 @case archive is NULL 79 @param archive NULL 80 @results BHandler::Name() returns NULL 81 @note This test is not enabled against the original implementation 82 as it doesn't check for a NULL parameter and seg faults. 83 */ 84 85void TBHandlerTester::BHandler5() 86{ 87#if !defined(TEST_R5) 88 BHandler Handler((BMessage*)NULL); 89 CPPUNIT_ASSERT(Handler.Name() == NULL); 90#endif 91} 92//------------------------------------------------------------------------------ 93/** 94 Archive(BMessage* data, bool deep = true) 95 @case data is NULL, deep is false 96 @param data NULL 97 @param deep false 98 @results Returns B_BAD_VALUE 99 @note This test is not enabled against the original implementation 100 as it doesn't check for NULL parameters and seg faults 101 */ 102void TBHandlerTester::Archive1() 103{ 104#if !defined(TEST_R5) 105 BHandler Handler; 106 CPPUNIT_ASSERT(Handler.Archive(NULL, false) == B_BAD_VALUE); 107#endif 108} 109//------------------------------------------------------------------------------ 110/** 111 Archive(BMessage* data, bool deep = true) 112 @case data is NULL, deep is true 113 @param data NULL 114 @param deep false 115 @results Returns B_BAD_VALUE 116 @note This test is not enabled against the original implementation 117 as it doesn't check for NULL parameters and seg faults 118 */ 119void TBHandlerTester::Archive2() 120{ 121#if !defined(TEST_R5) 122 BHandler Handler; 123 CPPUNIT_ASSERT(Handler.Archive(NULL) == B_BAD_VALUE); 124#endif 125} 126//------------------------------------------------------------------------------ 127/** 128 Archive(BMessage* data, bool deep = true) 129 @case data is valid, deep is false 130 @param data valid BMessage pointer 131 @param deep false 132 @results Returns B_OK 133 Resultant archive has string field labeled "_name" 134 Field "_name" contains the string "a name" 135 Resultant archive has string field labeled "class" 136 Field "class" contains the string "BHandler" 137 */ 138void TBHandlerTester::Archive3() 139{ 140 BMessage Archive; 141 BHandler Handler("a name"); 142 CPPUNIT_ASSERT(Handler.Archive(&Archive, false) == B_OK); 143 144 const char* data; 145 CPPUNIT_ASSERT(Archive.FindString("_name", &data) == B_OK); 146 CPPUNIT_ASSERT(string("a name") == data); 147 CPPUNIT_ASSERT(Archive.FindString("class", &data) == B_OK); 148 CPPUNIT_ASSERT(string("BHandler") == data); 149} 150//------------------------------------------------------------------------------ 151/** 152 Archive(BMessage *data, bool deep = true) 153 @case data is valid, deep is true 154 @param data valid BMessage pointer 155 @param deep true 156 @results Returns B_OK 157 Resultant archive has string field labeled "_name" 158 Field "_name" contains the string "a name" 159 Resultant archive has string field labeled "class" 160 Field "class" contains the string "BHandler" 161 */ 162void TBHandlerTester::Archive4() 163{ 164 BMessage Archive; 165 BHandler Handler("another name"); 166 CPPUNIT_ASSERT(Handler.Archive(&Archive) == B_OK); 167 168 const char* data; 169 CPPUNIT_ASSERT(Archive.FindString("_name", &data) == B_OK); 170 CPPUNIT_ASSERT(string("another name") == data); 171 CPPUNIT_ASSERT(Archive.FindString("class", &data) == B_OK); 172 CPPUNIT_ASSERT(string("BHandler") == data); 173} 174//------------------------------------------------------------------------------ 175/** 176 Instantiate(BMessage* data) 177 @case data is NULL 178 @param data NULL 179 @results 180 @note This test is not enabled against the original implementation 181 as it doesn't check for NULL parameters and seg faults 182 */ 183void TBHandlerTester::Instantiate1() 184{ 185#if !defined(TEST_R5) 186 CPPUNIT_ASSERT(BHandler::Instantiate(NULL) == NULL); 187 CPPUNIT_ASSERT(errno == B_BAD_VALUE); 188#endif 189} 190//------------------------------------------------------------------------------ 191/** 192 Instantiate(BMessage* data) 193 @case data is valid, has field "_name" 194 @param data Valid BMessage pointer with string field "class" containing 195 string "BHandler" and with string field "_name" containing 196 string "a name" 197 @results BHandler::Name() returns "a name" 198 */ 199void TBHandlerTester::Instantiate2() 200{ 201 BMessage Archive; 202 Archive.AddString("class", "BHandler"); 203 Archive.AddString("_name", "a name"); 204 205 BHandler* Handler = 206 dynamic_cast<BHandler*>(BHandler::Instantiate(&Archive)); 207 CPPUNIT_ASSERT(Handler != NULL); 208 CPPUNIT_ASSERT(string("a name") == Handler->Name()); 209 CPPUNIT_ASSERT(errno == B_OK); 210} 211//------------------------------------------------------------------------------ 212/** 213 Instantiate(BMessage *data) 214 @case data is valid, has no field "_name" 215 @param data valid BMessage pointer with string field "class" containing 216 string "BHandler" 217 @results BHandler::Name() returns NULL 218 */ 219 220void TBHandlerTester::Instantiate3() 221{ 222 BMessage Archive; 223 Archive.AddString("class", "BHandler"); 224 225 BHandler* Handler = 226 dynamic_cast<BHandler*>(BHandler::Instantiate(&Archive)); 227 CPPUNIT_ASSERT(Handler != NULL); 228 CPPUNIT_ASSERT(Handler->Name() == NULL); 229 CPPUNIT_ASSERT(errno == B_OK); 230} 231//------------------------------------------------------------------------------ 232/** 233 SetName(const char* name) 234 Name() 235 @case name is NULL 236 @param name NULL 237 @results BHandler::Name() returns NULL 238 239 */ 240void TBHandlerTester::SetName1() 241{ 242 BHandler Handler("a name"); 243 CPPUNIT_ASSERT(string("a name") == Handler.Name()); 244 245 Handler.SetName(NULL); 246 CPPUNIT_ASSERT(Handler.Name() == NULL); 247} 248//------------------------------------------------------------------------------ 249/** 250 SetName(const char *name) 251 Name() 252 @case name is valid 253 @param name Valid string pointer 254 @results BHandler::Name returns name 255 */ 256void TBHandlerTester::SetName2() 257{ 258 BHandler Handler("a name"); 259 CPPUNIT_ASSERT(string("a name") == Handler.Name()); 260 261 Handler.SetName("another name"); 262 CPPUNIT_ASSERT(string("another name") == Handler.Name()); 263} 264//------------------------------------------------------------------------------ 265/** 266 Perform(perform_code d, void *arg) 267 @case feed meaningless data, should return B_ERROR 268 @param d N/A 269 @param arg NULL 270 @results Returns B_ERROR 271 */ 272void TBHandlerTester::Perform1() 273{ 274 BHandler Handler; 275 CPPUNIT_ASSERT(Handler.Perform(0, NULL) == B_ERROR); 276} 277//------------------------------------------------------------------------------ 278/** 279 FilterList(); 280 @case Default constructed BHandler 281 @results FilterList() returns NULL 282 */ 283void TBHandlerTester::FilterList1() 284{ 285 BHandler Handler; 286 CPPUNIT_ASSERT(!Handler.FilterList()); 287} 288//------------------------------------------------------------------------------ 289Test* TBHandlerTester::Suite() 290{ 291 TestSuite* SuiteOfTests = new TestSuite; 292 293 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler1); 294 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler2); 295 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler3); 296 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler4); 297 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler5); 298 299 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Archive1); 300 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Archive2); 301 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Archive3); 302 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Archive4); 303 304 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Instantiate1); 305 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Instantiate2); 306 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Instantiate3); 307 308 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, SetName1); 309 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, SetName2); 310 311 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Perform1); 312 313 ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, FilterList1); 314 315 return SuiteOfTests; 316} 317//------------------------------------------------------------------------------ 318 319/* 320 * $Log $ 321 * 322 * $Id $ 323 * 324 */ 325 326 327 328