summaryrefslogtreecommitdiff
path: root/TAO/tests/Param_Test/helper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tests/Param_Test/helper.cpp')
-rw-r--r--TAO/tests/Param_Test/helper.cpp128
1 files changed, 128 insertions, 0 deletions
diff --git a/TAO/tests/Param_Test/helper.cpp b/TAO/tests/Param_Test/helper.cpp
new file mode 100644
index 00000000000..3018a60ed1f
--- /dev/null
+++ b/TAO/tests/Param_Test/helper.cpp
@@ -0,0 +1,128 @@
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/tests/Param_Test
+//
+// = FILENAME
+// helper.cpp
+//
+// = DESCRIPTION
+// Defines a helper class that can generate values for the parameters used
+// for the Param_Test example
+//
+// = AUTHORS
+// Aniruddha Gokhale
+//
+// ============================================================================
+
+#include "helper.h"
+#include "ace/os_include/os_ctype.h"
+
+const CORBA::ULong TEST_BUFSIZE = 128;
+
+ACE_RCSID (Param_Test,
+ helper,
+ "$Id$")
+
+Generator::Generator (void)
+{
+}
+
+Generator::~Generator (void)
+{
+}
+
+CORBA::Short
+Generator::gen_short (void)
+{
+ return (CORBA::Short) (ACE_OS::rand () % TEST_BUFSIZE);
+}
+
+CORBA::Long
+Generator::gen_long (void)
+{
+ return ::ACE_OS::rand () % TEST_BUFSIZE;
+}
+
+char *
+Generator::gen_string (void)
+{
+ return gen_string (TEST_BUFSIZE);
+}
+
+char *
+Generator::gen_string (int max_length)
+{
+ CORBA::ULong len = (CORBA::ULong) (::ACE_OS::rand () % max_length);
+ char *buf = CORBA::string_alloc (len);
+ CORBA::ULong i = 0;
+
+ while (i < len)
+ {
+ int c = ACE_OS::rand () % 128;
+ if (isprint (c) && !isspace (c))
+ {
+ buf [i] = c;
+ i++;
+ }
+ }
+
+ buf[i] = 0;
+ return buf;
+}
+
+CORBA::WChar *
+Generator::gen_wstring (void)
+{
+ return gen_wstring (TEST_BUFSIZE);
+}
+
+CORBA::WChar *
+Generator::gen_wstring (int max_length)
+{
+ CORBA::ULong len = (CORBA::ULong) (::ACE_OS::rand () % max_length);
+ CORBA::WChar *buf = CORBA::wstring_alloc (len);
+ CORBA::ULong i = 0;
+ CORBA::WChar limit =
+ ACE_OutputCDR::wchar_maxbytes() == 1 ? ACE_OCTET_MAX : ACE_WCHAR_MAX;
+ while (i < len)
+ {
+ CORBA::WChar wc = ACE_OS::rand () % limit;
+ if (wc)
+ {
+ buf[i] = wc;
+ i++;
+ }
+ }
+
+ buf[i] = 0;
+ return buf;
+}
+
+const Param_Test::Fixed_Struct
+Generator::gen_fixed_struct (void)
+{
+ this->fixed_struct_.l = ACE_OS::rand ();
+ this->fixed_struct_.c = ACE_OS::rand () % 128;
+ this->fixed_struct_.s = (CORBA::Short) ACE_OS::rand ();
+ this->fixed_struct_.o = ACE_OS::rand () % 128;
+ this->fixed_struct_.f = (CORBA::Float) (ACE_OS::rand () * 1.0);
+ this->fixed_struct_.b = (CORBA::Boolean) (ACE_OS::rand () % 2);
+ this->fixed_struct_.d = (ACE_OS::rand () * 1.0);
+ return this->fixed_struct_;
+}
+
+const Param_Test::Step
+Generator::gen_step (void)
+{
+ this->step_.name.id = this->gen_string ();
+ this->step_.name.kind = this->gen_string ();
+ this->step_.process = (CORBA::Boolean) (ACE_OS::rand () % 2);
+ return this->step_;
+}
+
+#if defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION)
+template ACE_Singleton<Generator, ACE_Recursive_Thread_Mutex> *ACE_Singleton<Generator, ACE_Recursive_Thread_Mutex>::singleton_;
+#endif /* ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION */