summaryrefslogtreecommitdiff
path: root/ACE/tests/Bug_2434_Regression_Test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/tests/Bug_2434_Regression_Test.cpp')
-rw-r--r--ACE/tests/Bug_2434_Regression_Test.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/ACE/tests/Bug_2434_Regression_Test.cpp b/ACE/tests/Bug_2434_Regression_Test.cpp
new file mode 100644
index 00000000000..d3d6ce324fc
--- /dev/null
+++ b/ACE/tests/Bug_2434_Regression_Test.cpp
@@ -0,0 +1,68 @@
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// tests
+//
+// = FILENAME
+// Bug_2434_Regression_Test.cpp
+//
+// = DESCRIPTION
+// This is a simple test of ACE_Time_Value. No command line arguments
+// are needed to run the test. It also tests the ACE_U_LongLong class.
+// Because ACE_U_LongLong is used for ACE_hrtime_t on some platforms,
+// this seems like a reasonable place to test it.
+//
+// = AUTHOR
+// Prashant Jain <pjain@cs.wustl.edu> and David Levine <levine@cs.wustl.edu>
+//
+// ============================================================================
+
+// Note, for this test the config.h file *must* come first!
+#include "ace/config-all.h"
+
+ACE_RCSID(tests, Bug_2434_Regression_Test, "$Id$")
+
+#include "test_config.h"
+#include "ace/ACE.h"
+#include "ace/Time_Value.h"
+#include "ace/Numeric_Limits.h"
+
+int
+run_main (int, ACE_TCHAR *[])
+{
+ int ret = 0;
+
+ ACE_START_TEST (ACE_TEXT ("Bug_2434_Regression_Test"));
+
+ ACE_Time_Value tv1;
+ ACE_Time_Value tv2;
+
+ const time_t max_time_t = ACE_Numeric_Limits<time_t>::max ();
+ const time_t min_time_t = ACE_Numeric_Limits<time_t>::min ();
+
+ // test saturated result
+ tv1.set (max_time_t - 1, 499999);
+ tv2.set (max_time_t, 999999); // ACE_Time_Value::max_time
+ tv1 *= 10.0;
+ ACE_ASSERT (tv1 == tv2);
+ tv1.set (max_time_t - 1, 499999);
+ tv2.set (min_time_t, -999999);
+ tv1 *= -10.0;
+ ACE_ASSERT (tv1 == tv2);
+
+ // test results near limits
+ tv1.set ((max_time_t >> 1), 499999);
+ tv2.set ((-(max_time_t >> 1) << 1), -999998);
+ tv1 *= -2.0;
+ ACE_ASSERT (tv1 == tv2);
+ tv1.set (max_time_t >> 1, 499999);
+ tv2.set (((max_time_t >> 1) << 1), 999998);
+ tv1 *= 2.0;
+ ACE_ASSERT (tv1 == tv2);
+
+ ACE_END_TEST;
+
+ return ret;
+}