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 */ 31 void 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 */ 43 void 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 */ 55 void 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 */ 69 void 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 85 void 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 */ 102 void 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 */ 119 void 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 */ 138 void 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 */ 162 void 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 */ 183 void 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 */ 199 void 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 220 void 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 */ 240 void 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 */ 256 void 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 */ 272 void 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 */ 283 void TBHandlerTester::FilterList1() 284 { 285 BHandler Handler; 286 CPPUNIT_ASSERT(!Handler.FilterList()); 287 } 288 //------------------------------------------------------------------------------ 289 Test* 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