From 7dc2890fbba98944beed73665bb5be3ab83ee198 Mon Sep 17 00:00:00 2001 From: ejakowatz Date: Thu, 29 May 2003 05:23:41 +0000 Subject: [PATCH] Unit tests for the Pointer convenience functions. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3383 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../app/bmessage/MessagePointerItemTest.h | 90 +++++++++++++++++++ src/tests/kits/app/bmessage/MessageTest.cpp | 2 + 2 files changed, 92 insertions(+) create mode 100644 src/tests/kits/app/bmessage/MessagePointerItemTest.h diff --git a/src/tests/kits/app/bmessage/MessagePointerItemTest.h b/src/tests/kits/app/bmessage/MessagePointerItemTest.h new file mode 100644 index 0000000000..f2bc23ff84 --- /dev/null +++ b/src/tests/kits/app/bmessage/MessagePointerItemTest.h @@ -0,0 +1,90 @@ +//------------------------------------------------------------------------------ +// MessagePointerItemTest.h +// +//------------------------------------------------------------------------------ + +#ifndef MESSAGEPOINTERITEMTEST_H +#define MESSAGEPOINTERITEMTEST_H + +// Standard Includes ----------------------------------------------------------- + +// System Includes ------------------------------------------------------------- + +// Project Includes ------------------------------------------------------------ + +// Local Includes -------------------------------------------------------------- +#include "MessageItemTest.h" + +// Local Defines --------------------------------------------------------------- + +// Globals --------------------------------------------------------------------- + +struct TPointerFuncPolicy +{ + static status_t Add(BMessage& msg, const char* name, const void* val) + { return msg.AddPointer(name, val); } + static status_t AddData(BMessage& msg, const char* name, type_code type, + const void* data, ssize_t size, bool) + { return msg.AddData(name, type, data, size); } + static status_t Find(BMessage& msg, const char* name, int32 index, + const void** val) + { return msg.FindPointer(name, index, (void**)val); } + static const void* QuickFind(BMessage& msg, const char* name, int32 index) + { + const void* ptr; + msg.FindPointer(name, index, (void**)&ptr); + return ptr; + } + static bool Has(BMessage& msg, const char* name, int32 index) + { return msg.HasPointer(name, index); } + static status_t Replace(BMessage& msg, const char* name, int32 index, + const void* val) + { return msg.ReplacePointer(name, index, val); } + static status_t FindData(BMessage& msg, const char* name, type_code type, + int32 index, const void** data, ssize_t* size) + { return msg.FindData(name, type, index, data, size); } +}; + +struct TPointerInitPolicy : public ArrayTypeBase +{ + inline static const void* Zero() { return NULL; } + inline static const void* Test1() { return &Test1; } + inline static const void* Test2() { return &Test2; } + inline static size_t SizeOf(const void*) { return sizeof (const void*); } + inline static ArrayType Array() + { + ArrayType array; + array.push_back(Zero()); + array.push_back(Test1()); + array.push_back(Test2()); + return array; + } +}; + +struct TPointerAssertPolicy +{ + inline static const void* Zero() { return NULL; } + inline static const void* Invalid() { return NULL; } + inline static bool Size(size_t size, const void* t) + { return size == sizeof (t); } +}; + +typedef TMessageItemTest +< + const void*, + B_POINTER_TYPE, + TPointerFuncPolicy, + TPointerInitPolicy, + TPointerAssertPolicy +> +TMessagePointerItemTest; + +#endif // MESSAGEPOINTERITEMTEST_H + +/* + * $Log $ + * + * $Id $ + * + */ + diff --git a/src/tests/kits/app/bmessage/MessageTest.cpp b/src/tests/kits/app/bmessage/MessageTest.cpp index a35d1bb93f..e670d8c163 100644 --- a/src/tests/kits/app/bmessage/MessageTest.cpp +++ b/src/tests/kits/app/bmessage/MessageTest.cpp @@ -18,6 +18,7 @@ #include "MessageBStringItemTest.h" #include "MessageCStringItemTest.h" #include "MessageMessengerItemTest.h" +#include "MessagePointerItemTest.h" Test* MessageTestSuite() { @@ -40,6 +41,7 @@ Test* MessageTestSuite() tests->addTest(TMessageBStringItemTest::Suite()); tests->addTest(TMessageCStringItemTest::Suite()); tests->addTest(TMessageMessengerItemTest::Suite()); + tests->addTest(TMessagePointerItemTest::Suite()); return tests; }