1*be45e998Sejakowatz //------------------------------------------------------------------------------ 2*be45e998Sejakowatz // MessageItemTest.h 3*be45e998Sejakowatz // 4*be45e998Sejakowatz //------------------------------------------------------------------------------ 5*be45e998Sejakowatz 6*be45e998Sejakowatz #ifndef MESSAGEITEMTEST_H 7*be45e998Sejakowatz #define MESSAGEITEMTEST_H 8*be45e998Sejakowatz 9*be45e998Sejakowatz // A sad attempt to get rid of the horrible and pathetic vector<bool> specialization 10*be45e998Sejakowatz #define __SGI_STL_INTERNAL_BVECTOR_H 11*be45e998Sejakowatz 12*be45e998Sejakowatz // Standard Includes ----------------------------------------------------------- 13*be45e998Sejakowatz #include <iostream> 14*be45e998Sejakowatz #include <stdio.h> 15*be45e998Sejakowatz #ifdef TEST_OBOS 16*be45e998Sejakowatz #include <posix/typeinfo> 17*be45e998Sejakowatz #else 18*be45e998Sejakowatz #include <typeinfo> 19*be45e998Sejakowatz #endif 20*be45e998Sejakowatz #include <posix/string.h> 21*be45e998Sejakowatz 22*be45e998Sejakowatz // System Includes ------------------------------------------------------------- 23*be45e998Sejakowatz #include <Message.h> 24*be45e998Sejakowatz 25*be45e998Sejakowatz // Project Includes ------------------------------------------------------------ 26*be45e998Sejakowatz 27*be45e998Sejakowatz // Local Includes -------------------------------------------------------------- 28*be45e998Sejakowatz #include "../common.h" 29*be45e998Sejakowatz 30*be45e998Sejakowatz // Local Defines --------------------------------------------------------------- 31*be45e998Sejakowatz #define TEMPLATE_TEST_PARAMS <Type, TypeCode, FuncPolicy, InitPolicy, AssertPolicy> 32*be45e998Sejakowatz #define ADD_TEMPLATE_TEST(classbeingtested, suitename, classname, funcname) \ 33*be45e998Sejakowatz (suitename)->addTest(new TestCaller<classname>(((string(#classbeingtested) + "::" + #funcname + "::" + typeid(Type).name()).c_str() ), \ 34*be45e998Sejakowatz &classname::funcname)); 35*be45e998Sejakowatz 36*be45e998Sejakowatz // Globals --------------------------------------------------------------------- 37*be45e998Sejakowatz template 38*be45e998Sejakowatz < 39*be45e998Sejakowatz class Type, // int32 40*be45e998Sejakowatz type_code TypeCode, // B_INT32_TYPE 41*be45e998Sejakowatz class FuncPolicy, // status_t Add(BMessage&, const char*, Type&) 42*be45e998Sejakowatz // status_t Find(BMessage&, const char*, int32, Type*) 43*be45e998Sejakowatz // Type QuickFind(BMessage&, const char*, int32) 44*be45e998Sejakowatz // bool Has(BMessage&, const char*, int32) 45*be45e998Sejakowatz // status_t Replace(BMessage&, const char*, int32, Type) 46*be45e998Sejakowatz class InitPolicy, // Type Zero() 47*be45e998Sejakowatz // Type Test1() 48*be45e998Sejakowatz // Type Test2() 49*be45e998Sejakowatz // vector<Type> Array() 50*be45e998Sejakowatz class AssertPolicy // Type Zero() 51*be45e998Sejakowatz > 52*be45e998Sejakowatz class TMessageItemTest; 53*be45e998Sejakowatz 54*be45e998Sejakowatz 55*be45e998Sejakowatz //------------------------------------------------------------------------------ 56*be45e998Sejakowatz template<class T> 57*be45e998Sejakowatz struct ArrayTypeBase 58*be45e998Sejakowatz { 59*be45e998Sejakowatz typedef vector<T> ArrayType; 60*be45e998Sejakowatz typedef typename ArrayType::size_type SizeType; 61*be45e998Sejakowatz static SizeType Size(ArrayType& array) { return array.size(); } 62*be45e998Sejakowatz }; 63*be45e998Sejakowatz //------------------------------------------------------------------------------ 64*be45e998Sejakowatz template 65*be45e998Sejakowatz < 66*be45e998Sejakowatz typename Type, 67*be45e998Sejakowatz status_t (BMessage::*AddFunc)(const char*, Type), 68*be45e998Sejakowatz status_t (BMessage::*FindFunc)(const char*, int32, Type*) const, 69*be45e998Sejakowatz Type (BMessage::*QuickFindFunc)(const char*, int32) const, 70*be45e998Sejakowatz bool (BMessage::*HasFunc)(const char*, int32) const, 71*be45e998Sejakowatz status_t (BMessage::*ReplaceFunc)(const char*, int32, Type) 72*be45e998Sejakowatz > 73*be45e998Sejakowatz struct TMessageItemFuncPolicy 74*be45e998Sejakowatz { 75*be45e998Sejakowatz static status_t Add(BMessage& msg, const char* name, Type& val) 76*be45e998Sejakowatz { 77*be45e998Sejakowatz return (msg.*AddFunc)(name, val); 78*be45e998Sejakowatz } 79*be45e998Sejakowatz static status_t Find(BMessage& msg, const char* name, int32 index, Type* val) 80*be45e998Sejakowatz { 81*be45e998Sejakowatz return (msg.*FindFunc)(name, index, val); 82*be45e998Sejakowatz } 83*be45e998Sejakowatz static Type QuickFind(BMessage& msg, const char* name, int32 index) 84*be45e998Sejakowatz { 85*be45e998Sejakowatz return (msg.*QuickFindFunc)(name, index); 86*be45e998Sejakowatz } 87*be45e998Sejakowatz static bool Has(BMessage& msg, const char* name, int32 index) 88*be45e998Sejakowatz { 89*be45e998Sejakowatz return (msg.*HasFunc)(name, index); 90*be45e998Sejakowatz } 91*be45e998Sejakowatz static status_t Replace(BMessage& msg, const char* name, int32 index, Type val) 92*be45e998Sejakowatz { 93*be45e998Sejakowatz return (msg.*ReplaceFunc)(name, index, val); 94*be45e998Sejakowatz } 95*be45e998Sejakowatz }; 96*be45e998Sejakowatz //------------------------------------------------------------------------------ 97*be45e998Sejakowatz template 98*be45e998Sejakowatz < 99*be45e998Sejakowatz class Type, // int32 100*be45e998Sejakowatz type_code TypeCode, // B_INT32_TYPE 101*be45e998Sejakowatz class FuncPolicy, // status_t Add(BMessage&, const char*, Type&) 102*be45e998Sejakowatz // status_t Find(BMessage&, const char*, int32, Type*) 103*be45e998Sejakowatz // Type QuickFind(BMessage&, const char*, int32) 104*be45e998Sejakowatz // bool Has(BMessage&, const char*, int32) 105*be45e998Sejakowatz // status_t Replace(BMessage&, const char*, int32, Type) 106*be45e998Sejakowatz class InitPolicy, // Type Zero() 107*be45e998Sejakowatz // Type Test1() 108*be45e998Sejakowatz // Type Test2() 109*be45e998Sejakowatz // ArrayType Array() 110*be45e998Sejakowatz // typedef XXX ArrayType 111*be45e998Sejakowatz class AssertPolicy // Type Zero() 112*be45e998Sejakowatz // Type Invalid() 113*be45e998Sejakowatz > 114*be45e998Sejakowatz class TMessageItemTest : public TestCase 115*be45e998Sejakowatz { 116*be45e998Sejakowatz public: 117*be45e998Sejakowatz TMessageItemTest() {;} 118*be45e998Sejakowatz TMessageItemTest(std::string name) : TestCase(name) {;} 119*be45e998Sejakowatz 120*be45e998Sejakowatz void MessageItemTest1(); 121*be45e998Sejakowatz void MessageItemTest2(); 122*be45e998Sejakowatz void MessageItemTest3(); 123*be45e998Sejakowatz void MessageItemTest4(); 124*be45e998Sejakowatz void MessageItemTest5(); 125*be45e998Sejakowatz void MessageItemTest6(); 126*be45e998Sejakowatz void MessageItemTest7(); 127*be45e998Sejakowatz void MessageItemTest8(); 128*be45e998Sejakowatz 129*be45e998Sejakowatz static TestSuite* Suite(); 130*be45e998Sejakowatz 131*be45e998Sejakowatz typedef typename InitPolicy::ArrayType ArrayType; 132*be45e998Sejakowatz }; 133*be45e998Sejakowatz 134*be45e998Sejakowatz 135*be45e998Sejakowatz //------------------------------------------------------------------------------ 136*be45e998Sejakowatz template 137*be45e998Sejakowatz < 138*be45e998Sejakowatz class Type, 139*be45e998Sejakowatz type_code TypeCode, 140*be45e998Sejakowatz class FuncPolicy, 141*be45e998Sejakowatz class InitPolicy, 142*be45e998Sejakowatz class AssertPolicy 143*be45e998Sejakowatz > 144*be45e998Sejakowatz void 145*be45e998Sejakowatz TMessageItemTest<Type, TypeCode, FuncPolicy, InitPolicy, AssertPolicy>:: 146*be45e998Sejakowatz MessageItemTest1() 147*be45e998Sejakowatz { 148*be45e998Sejakowatz BMessage msg; 149*be45e998Sejakowatz Type out = InitPolicy::Zero(); 150*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Find(msg, "item", 0, &out) == B_NAME_NOT_FOUND); 151*be45e998Sejakowatz CPPUNIT_ASSERT(out == AssertPolicy::Invalid()); 152*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::QuickFind(msg, "item", 0) == AssertPolicy::Invalid()); 153*be45e998Sejakowatz CPPUNIT_ASSERT(!FuncPolicy::Has(msg, "item", 0)); 154*be45e998Sejakowatz const void* ptr = &out; 155*be45e998Sejakowatz ssize_t size; 156*be45e998Sejakowatz CPPUNIT_ASSERT(msg.FindData("item", TypeCode, &ptr, &size) == 157*be45e998Sejakowatz B_NAME_NOT_FOUND); 158*be45e998Sejakowatz CPPUNIT_ASSERT(ptr == NULL); 159*be45e998Sejakowatz } 160*be45e998Sejakowatz //------------------------------------------------------------------------------ 161*be45e998Sejakowatz template 162*be45e998Sejakowatz < 163*be45e998Sejakowatz class Type, 164*be45e998Sejakowatz type_code TypeCode, 165*be45e998Sejakowatz class FuncPolicy, 166*be45e998Sejakowatz class InitPolicy, 167*be45e998Sejakowatz class AssertPolicy 168*be45e998Sejakowatz > 169*be45e998Sejakowatz void 170*be45e998Sejakowatz TMessageItemTest<Type, TypeCode, FuncPolicy, InitPolicy, AssertPolicy>:: 171*be45e998Sejakowatz MessageItemTest2() 172*be45e998Sejakowatz { 173*be45e998Sejakowatz BMessage msg; 174*be45e998Sejakowatz Type in = InitPolicy::Test1(); 175*be45e998Sejakowatz Type out = InitPolicy::Zero(); 176*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Add(msg, "item", in) == B_OK); 177*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Has(msg, "item", 0)); 178*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::QuickFind(msg, "item", 0) == in); 179*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Find(msg, "item", 0, &out) == B_OK); 180*be45e998Sejakowatz CPPUNIT_ASSERT(out == in); 181*be45e998Sejakowatz Type* pout = NULL; 182*be45e998Sejakowatz ssize_t size; 183*be45e998Sejakowatz status_t err = msg.FindData("item", TypeCode, (const void**)&pout, &size); 184*be45e998Sejakowatz CPPUNIT_ASSERT(err == B_OK); 185*be45e998Sejakowatz CPPUNIT_ASSERT(*pout == in); 186*be45e998Sejakowatz CPPUNIT_ASSERT(size == sizeof (Type)); 187*be45e998Sejakowatz } 188*be45e998Sejakowatz //------------------------------------------------------------------------------ 189*be45e998Sejakowatz template 190*be45e998Sejakowatz < 191*be45e998Sejakowatz class Type, 192*be45e998Sejakowatz type_code TypeCode, 193*be45e998Sejakowatz class FuncPolicy, 194*be45e998Sejakowatz class InitPolicy, 195*be45e998Sejakowatz class AssertPolicy 196*be45e998Sejakowatz > 197*be45e998Sejakowatz void 198*be45e998Sejakowatz TMessageItemTest<Type, TypeCode, FuncPolicy, InitPolicy, AssertPolicy>:: 199*be45e998Sejakowatz MessageItemTest3() 200*be45e998Sejakowatz { 201*be45e998Sejakowatz BMessage msg; 202*be45e998Sejakowatz Type in = InitPolicy::Test1(); 203*be45e998Sejakowatz Type in2 = InitPolicy::Test2(); 204*be45e998Sejakowatz Type out = InitPolicy::Zero(); 205*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Add(msg, "item", in) == B_OK); 206*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Replace(msg, "item", 0, in2) == B_OK); 207*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Has(msg, "item", 0)); 208*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::QuickFind(msg, "item", 0) == in2); 209*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Find(msg, "item", 0, &out) == B_OK); 210*be45e998Sejakowatz CPPUNIT_ASSERT(out == in2); 211*be45e998Sejakowatz out = InitPolicy::Zero(); 212*be45e998Sejakowatz Type* pout; 213*be45e998Sejakowatz ssize_t size; 214*be45e998Sejakowatz CPPUNIT_ASSERT(msg.FindData("item", TypeCode, (const void**)&pout, 215*be45e998Sejakowatz &size) == B_OK); 216*be45e998Sejakowatz CPPUNIT_ASSERT(*pout == in2); 217*be45e998Sejakowatz CPPUNIT_ASSERT(size == sizeof (Type)); 218*be45e998Sejakowatz } 219*be45e998Sejakowatz //------------------------------------------------------------------------------ 220*be45e998Sejakowatz template 221*be45e998Sejakowatz < 222*be45e998Sejakowatz class Type, 223*be45e998Sejakowatz type_code TypeCode, 224*be45e998Sejakowatz class FuncPolicy, 225*be45e998Sejakowatz class InitPolicy, 226*be45e998Sejakowatz class AssertPolicy 227*be45e998Sejakowatz > 228*be45e998Sejakowatz void 229*be45e998Sejakowatz TMessageItemTest<Type, TypeCode, FuncPolicy, InitPolicy, AssertPolicy>:: 230*be45e998Sejakowatz MessageItemTest4() 231*be45e998Sejakowatz { 232*be45e998Sejakowatz BMessage msg; 233*be45e998Sejakowatz Type out = InitPolicy::Zero(); 234*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Find(msg, "item", 1, &out) == B_NAME_NOT_FOUND); 235*be45e998Sejakowatz CPPUNIT_ASSERT(out == AssertPolicy::Invalid()); 236*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::QuickFind(msg, "item", 1) == AssertPolicy::Invalid()); 237*be45e998Sejakowatz CPPUNIT_ASSERT(!FuncPolicy::Has(msg, "item", 1)); 238*be45e998Sejakowatz const void* ptr = &out; 239*be45e998Sejakowatz ssize_t size; 240*be45e998Sejakowatz CPPUNIT_ASSERT(msg.FindData("item", TypeCode, 1, &ptr, &size) == 241*be45e998Sejakowatz B_NAME_NOT_FOUND); 242*be45e998Sejakowatz CPPUNIT_ASSERT(ptr == NULL); 243*be45e998Sejakowatz } 244*be45e998Sejakowatz //------------------------------------------------------------------------------ 245*be45e998Sejakowatz template 246*be45e998Sejakowatz < 247*be45e998Sejakowatz class Type, 248*be45e998Sejakowatz type_code TypeCode, 249*be45e998Sejakowatz class FuncPolicy, 250*be45e998Sejakowatz class InitPolicy, 251*be45e998Sejakowatz class AssertPolicy 252*be45e998Sejakowatz > 253*be45e998Sejakowatz void 254*be45e998Sejakowatz TMessageItemTest<Type, TypeCode, FuncPolicy, InitPolicy, AssertPolicy>:: 255*be45e998Sejakowatz MessageItemTest5() 256*be45e998Sejakowatz { 257*be45e998Sejakowatz BMessage msg; 258*be45e998Sejakowatz ArrayType in = InitPolicy::Array(); 259*be45e998Sejakowatz Type out = InitPolicy::Zero(); 260*be45e998Sejakowatz Type* pout; 261*be45e998Sejakowatz ssize_t size; 262*be45e998Sejakowatz 263*be45e998Sejakowatz for (int32 i = 0; i < InitPolicy::Size(in); ++i) 264*be45e998Sejakowatz { 265*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Add(msg, "item", in[i]) == B_OK); 266*be45e998Sejakowatz } 267*be45e998Sejakowatz 268*be45e998Sejakowatz for (int32 i = 0; i < InitPolicy::Size(in); ++i) 269*be45e998Sejakowatz { 270*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Has(msg, "item", i)); 271*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::QuickFind(msg, "item", i) == in[i]); 272*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Find(msg, "item", i, &out) == B_OK); 273*be45e998Sejakowatz CPPUNIT_ASSERT(out == in[i]); 274*be45e998Sejakowatz CPPUNIT_ASSERT(msg.FindData("item", TypeCode, i, 275*be45e998Sejakowatz (const void**)&pout, &size) == B_OK); 276*be45e998Sejakowatz CPPUNIT_ASSERT(*pout == in[i]); 277*be45e998Sejakowatz CPPUNIT_ASSERT(size == sizeof (Type)); 278*be45e998Sejakowatz } 279*be45e998Sejakowatz } 280*be45e998Sejakowatz //------------------------------------------------------------------------------ 281*be45e998Sejakowatz template 282*be45e998Sejakowatz < 283*be45e998Sejakowatz class Type, 284*be45e998Sejakowatz type_code TypeCode, 285*be45e998Sejakowatz class FuncPolicy, 286*be45e998Sejakowatz class InitPolicy, 287*be45e998Sejakowatz class AssertPolicy 288*be45e998Sejakowatz > 289*be45e998Sejakowatz void 290*be45e998Sejakowatz TMessageItemTest<Type, TypeCode, FuncPolicy, InitPolicy, AssertPolicy>:: 291*be45e998Sejakowatz MessageItemTest6() 292*be45e998Sejakowatz { 293*be45e998Sejakowatz BMessage msg; 294*be45e998Sejakowatz ArrayType in = InitPolicy::Array(); 295*be45e998Sejakowatz Type in2 = InitPolicy::Test2(); 296*be45e998Sejakowatz Type out = InitPolicy::Zero(); 297*be45e998Sejakowatz const int rIndex = 2; 298*be45e998Sejakowatz 299*be45e998Sejakowatz for (int32 i = 0; i < InitPolicy::Size(in); ++i) 300*be45e998Sejakowatz { 301*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Add(msg, "item", in[i]) == B_OK); 302*be45e998Sejakowatz } 303*be45e998Sejakowatz 304*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Replace(msg, "item", rIndex, in2) == B_OK); 305*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Has(msg, "item", rIndex)); 306*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::QuickFind(msg, "item", rIndex) == in2); 307*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Find(msg, "item", rIndex, &out) == B_OK); 308*be45e998Sejakowatz CPPUNIT_ASSERT(out == in2); 309*be45e998Sejakowatz out = InitPolicy::Zero(); 310*be45e998Sejakowatz Type* pout; 311*be45e998Sejakowatz ssize_t size; 312*be45e998Sejakowatz CPPUNIT_ASSERT(msg.FindData("item", TypeCode, rIndex, 313*be45e998Sejakowatz (const void**)&pout, &size) == B_OK); 314*be45e998Sejakowatz CPPUNIT_ASSERT(*pout == in2); 315*be45e998Sejakowatz CPPUNIT_ASSERT(size == sizeof (Type)); 316*be45e998Sejakowatz } 317*be45e998Sejakowatz //------------------------------------------------------------------------------ 318*be45e998Sejakowatz template 319*be45e998Sejakowatz < 320*be45e998Sejakowatz class Type, 321*be45e998Sejakowatz type_code TypeCode, 322*be45e998Sejakowatz class FuncPolicy, 323*be45e998Sejakowatz class InitPolicy, 324*be45e998Sejakowatz class AssertPolicy 325*be45e998Sejakowatz > 326*be45e998Sejakowatz void 327*be45e998Sejakowatz TMessageItemTest<Type, TypeCode, FuncPolicy, InitPolicy, AssertPolicy>:: 328*be45e998Sejakowatz MessageItemTest7() 329*be45e998Sejakowatz { 330*be45e998Sejakowatz BMessage msg; 331*be45e998Sejakowatz Type in = InitPolicy::Test1(); 332*be45e998Sejakowatz Type out = InitPolicy::Zero(); 333*be45e998Sejakowatz CPPUNIT_ASSERT(msg.AddData("item", TypeCode, (const void*)&in, 334*be45e998Sejakowatz sizeof (Type)) == B_OK); 335*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Has(msg, "item", 0)); 336*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::QuickFind(msg, "item", 0) == in); 337*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Find(msg, "item", 0, &out) == B_OK); 338*be45e998Sejakowatz CPPUNIT_ASSERT(out == in); 339*be45e998Sejakowatz Type* pout = NULL; 340*be45e998Sejakowatz ssize_t size; 341*be45e998Sejakowatz CPPUNIT_ASSERT(msg.FindData("item", TypeCode, (const void**)&pout, 342*be45e998Sejakowatz &size) == B_OK); 343*be45e998Sejakowatz CPPUNIT_ASSERT(*pout == in); 344*be45e998Sejakowatz CPPUNIT_ASSERT(size == sizeof (Type)); 345*be45e998Sejakowatz } 346*be45e998Sejakowatz //------------------------------------------------------------------------------ 347*be45e998Sejakowatz template 348*be45e998Sejakowatz < 349*be45e998Sejakowatz class Type, 350*be45e998Sejakowatz type_code TypeCode, 351*be45e998Sejakowatz class FuncPolicy, 352*be45e998Sejakowatz class InitPolicy, 353*be45e998Sejakowatz class AssertPolicy 354*be45e998Sejakowatz > 355*be45e998Sejakowatz void 356*be45e998Sejakowatz TMessageItemTest<Type, TypeCode, FuncPolicy, InitPolicy, AssertPolicy>:: 357*be45e998Sejakowatz MessageItemTest8() 358*be45e998Sejakowatz { 359*be45e998Sejakowatz BMessage msg; 360*be45e998Sejakowatz ArrayType in = InitPolicy::Array(); 361*be45e998Sejakowatz Type out = InitPolicy::Zero(); 362*be45e998Sejakowatz Type* pout; 363*be45e998Sejakowatz ssize_t size; 364*be45e998Sejakowatz 365*be45e998Sejakowatz for (int32 i = 0; i < InitPolicy::Size(in); ++i) 366*be45e998Sejakowatz { 367*be45e998Sejakowatz CPPUNIT_ASSERT(msg.AddData("item", TypeCode, 368*be45e998Sejakowatz (const void*)&in[i], sizeof (Type)) == B_OK); 369*be45e998Sejakowatz } 370*be45e998Sejakowatz 371*be45e998Sejakowatz for (int32 i = 0; i < InitPolicy::Size(in); ++i) 372*be45e998Sejakowatz { 373*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Has(msg, "item", i)); 374*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::QuickFind(msg, "item", i) == in[i]); 375*be45e998Sejakowatz CPPUNIT_ASSERT(FuncPolicy::Find(msg, "item", i, &out) == B_OK); 376*be45e998Sejakowatz CPPUNIT_ASSERT(out == in[i]); 377*be45e998Sejakowatz CPPUNIT_ASSERT(msg.FindData("item", TypeCode, i, 378*be45e998Sejakowatz (const void**)&pout, &size) == B_OK); 379*be45e998Sejakowatz CPPUNIT_ASSERT(*pout == in[i]); 380*be45e998Sejakowatz CPPUNIT_ASSERT(size == sizeof (Type)); 381*be45e998Sejakowatz } 382*be45e998Sejakowatz } 383*be45e998Sejakowatz //------------------------------------------------------------------------------ 384*be45e998Sejakowatz template 385*be45e998Sejakowatz < 386*be45e998Sejakowatz class Type, 387*be45e998Sejakowatz type_code TypeCode, 388*be45e998Sejakowatz class FuncPolicy, 389*be45e998Sejakowatz class InitPolicy, 390*be45e998Sejakowatz class AssertPolicy 391*be45e998Sejakowatz > 392*be45e998Sejakowatz TestSuite* 393*be45e998Sejakowatz TMessageItemTest<Type, TypeCode, FuncPolicy, InitPolicy, AssertPolicy>:: 394*be45e998Sejakowatz Suite() 395*be45e998Sejakowatz { 396*be45e998Sejakowatz TestSuite* suite = new TestSuite("BMessage::Add/Find/Replace/HasRect()"); 397*be45e998Sejakowatz 398*be45e998Sejakowatz ADD_TEMPLATE_TEST(BMessage, suite, TMessageItemTest TEMPLATE_TEST_PARAMS, MessageItemTest1); 399*be45e998Sejakowatz ADD_TEMPLATE_TEST(BMessage, suite, TMessageItemTest TEMPLATE_TEST_PARAMS, MessageItemTest2); 400*be45e998Sejakowatz ADD_TEMPLATE_TEST(BMessage, suite, TMessageItemTest TEMPLATE_TEST_PARAMS, MessageItemTest3); 401*be45e998Sejakowatz ADD_TEMPLATE_TEST(BMessage, suite, TMessageItemTest TEMPLATE_TEST_PARAMS, MessageItemTest4); 402*be45e998Sejakowatz ADD_TEMPLATE_TEST(BMessage, suite, TMessageItemTest TEMPLATE_TEST_PARAMS, MessageItemTest5); 403*be45e998Sejakowatz ADD_TEMPLATE_TEST(BMessage, suite, TMessageItemTest TEMPLATE_TEST_PARAMS, MessageItemTest6); 404*be45e998Sejakowatz ADD_TEMPLATE_TEST(BMessage, suite, TMessageItemTest TEMPLATE_TEST_PARAMS, MessageItemTest7); 405*be45e998Sejakowatz ADD_TEMPLATE_TEST(BMessage, suite, TMessageItemTest TEMPLATE_TEST_PARAMS, MessageItemTest8); 406*be45e998Sejakowatz 407*be45e998Sejakowatz return suite; 408*be45e998Sejakowatz } 409*be45e998Sejakowatz //------------------------------------------------------------------------------ 410*be45e998Sejakowatz 411*be45e998Sejakowatz #endif // MESSAGEITEMTEST_H 412*be45e998Sejakowatz 413*be45e998Sejakowatz /* 414*be45e998Sejakowatz * $Log $ 415*be45e998Sejakowatz * 416*be45e998Sejakowatz * $Id $ 417*be45e998Sejakowatz * 418*be45e998Sejakowatz 419*be45e998Sejakowatz */