summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2018-11-15 17:58:07 +0000
committerSteve Huston <shuston@riverace.com>2018-11-15 17:58:07 +0000
commit5c8a5f3056270427afe82cdc95750b1abd8541ba (patch)
tree4382e4794576192e6aee2b3e960d2e6dfaaa75fe
parentc012b967ff35ca8e2b8aea211bee05600683ee1f (diff)
downloadATCD-5c8a5f3056270427afe82cdc95750b1abd8541ba.tar.gz
Add user-defined ACE_Data_Block test case
-rw-r--r--ACE/tests/Message_Block_Test.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/ACE/tests/Message_Block_Test.cpp b/ACE/tests/Message_Block_Test.cpp
index 554ce4c20da..bd64a6226cb 100644
--- a/ACE/tests/Message_Block_Test.cpp
+++ b/ACE/tests/Message_Block_Test.cpp
@@ -28,6 +28,20 @@ static const int ACE_ALLOC_SIZE = 5;
// Amount of memory block preallocated.
static const size_t ACE_ALLOC_AMOUNT = 48;
+// For the user-defined data block test
+static bool user_data_dtor_called = false;
+class User_Data : public ACE_Data_Block
+{
+public:
+ User_Data() {}
+
+ ~User_Data()
+ {
+ ACE_DEBUG((LM_DEBUG, ACE_TEXT ("User_Data dtor\n")));
+ user_data_dtor_called = true;
+ }
+};
+
#if defined (ACE_HAS_THREADS)
#include "ace/Lock_Adapter_T.h"
@@ -345,6 +359,25 @@ int
run_main (int, ACE_TCHAR *[])
{
ACE_START_TEST (ACE_TEXT ("Message_Block_Test"));
+
+ // A quick user-defined data block test, then the main event
+ User_Data *user_data_block = 0;
+ ACE_NEW_RETURN (user_data_block,
+ User_Data (),
+ -1);
+
+ // Create a new message block referring to the User_Data block and
+ // ensure it is released and freed correctly.
+ ACE_Message_Block *wrapper_mb = 0;
+ ACE_NEW_RETURN (wrapper_mb,
+ ACE_Message_Block (user_data_block),
+ -1);
+
+ wrapper_mb->release ();
+ wrapper_mb = 0;
+ if (!user_data_dtor_called)
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("User-defined data block not freed correctly.\n")));
+
#if defined (ACE_HAS_THREADS)
int n_threads = ACE_MAX_THREADS;