check for Time bounds
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 15 Nov 2007 10:15:16 +0100
changeset 1829 4a4799006fab
parent 1828 6ab68edddf45
child 1830 8fead8808f3f
child 1852 8fba656f0da6
child 2114 bfd8e5afb36d
check for Time bounds
src/simulator/time.cc
--- a/src/simulator/time.cc	Wed Nov 14 21:59:14 2007 -0800
+++ b/src/simulator/time.cc	Thu Nov 15 10:15:16 2007 +0100
@@ -354,62 +354,62 @@
 
 bool TimeTests::RunTests (void)
 {
-  bool ok = true;
+  bool result = true;
 
   Time t0, t1;
 
-  CheckOld(&ok);
+  CheckOld(&result);
 
   t0 = MilliSeconds ((uint64_t)10.0);
   t1 = MilliSeconds ((uint64_t)11.0);
 
-  CheckOperations(t0, t1, &ok);
+  CheckOperations(t0, t1, &result);
 
   //  t0 = Seconds ((uint64_t)10.0);
   //  t1 = Seconds ((uint64_t)11.0);
 
-  //  CheckOperations(t0, t1, &ok);
+  //  CheckOperations(t0, t1, &result);
 
-  CheckConversions((uint64_t)5, &ok);
-  CheckConversions((uint64_t)0, &ok);
-  CheckConversions((uint64_t)783, &ok);
-  CheckConversions((uint64_t)1132, &ok);
-  //  CheckConversions((uint64_t)3341039, &ok);
+  CheckConversions((uint64_t)5, &result);
+  CheckConversions((uint64_t)0, &result);
+  CheckConversions((uint64_t)783, &result);
+  CheckConversions((uint64_t)1132, &result);
+  //  CheckConversions((uint64_t)3341039, &result);
 
   // Now vary the precision and check the conversions
   if (TimeStepPrecision::Get () != TimeStepPrecision::NS) {
-    ok = false;
+    result = false;
   }
 
-  CheckPrecision(TimeStepPrecision::US, 7, &ok);
+  CheckPrecision(TimeStepPrecision::US, 7, &result);
 
-  CheckConversions((uint64_t)7, &ok);
-  CheckConversions((uint64_t)546, &ok);
-  CheckConversions((uint64_t)6231, &ok);
-  //  CheckConversions((uint64_t)1234639, &ok);
+  CheckConversions((uint64_t)7, &result);
+  CheckConversions((uint64_t)546, &result);
+  CheckConversions((uint64_t)6231, &result);
+  //  CheckConversions((uint64_t)1234639, &result);
 
-  CheckPrecision(TimeStepPrecision::MS, 3, &ok);
+  CheckPrecision(TimeStepPrecision::MS, 3, &result);
 
-  CheckConversions((uint64_t)3, &ok);
-  CheckConversions((uint64_t)134, &ok);
-  CheckConversions((uint64_t)2341, &ok);
-  //  CheckConversions((uint64_t)8956239, &ok);
+  CheckConversions((uint64_t)3, &result);
+  CheckConversions((uint64_t)134, &result);
+  CheckConversions((uint64_t)2341, &result);
+  //  CheckConversions((uint64_t)8956239, &result);
 
-  CheckPrecision(TimeStepPrecision::PS, 21, &ok);
+  CheckPrecision(TimeStepPrecision::PS, 21, &result);
 
-  CheckConversions((uint64_t)4, &ok);
-  CheckConversions((uint64_t)342, &ok);
-  CheckConversions((uint64_t)1327, &ok);
-  //  CheckConversions((uint64_t)5439627, &ok);
+  CheckConversions((uint64_t)4, &result);
+  CheckConversions((uint64_t)342, &result);
+  CheckConversions((uint64_t)1327, &result);
+  //  CheckConversions((uint64_t)5439627, &result);
 
-  CheckPrecision(TimeStepPrecision::NS, 12, &ok);
-  CheckConversions((uint64_t)12, &ok);
+  CheckPrecision(TimeStepPrecision::NS, 12, &result);
+  CheckConversions((uint64_t)12, &result);
 
-  CheckPrecision(TimeStepPrecision::S, 7, &ok);
-  CheckConversions((uint64_t)7, &ok);
+  CheckPrecision(TimeStepPrecision::S, 7, &result);
+  CheckConversions((uint64_t)7, &result);
 
-  CheckPrecision(TimeStepPrecision::FS, 5, &ok);
-  CheckConversions((uint64_t)5, &ok);
+  CheckPrecision(TimeStepPrecision::FS, 5, &result);
+  CheckConversions((uint64_t)5, &result);
 
   TimeStepPrecision::Set (TimeStepPrecision::NS);
 
@@ -420,7 +420,17 @@
   DefaultValue::Bind ("TimeStepPrecision", "PS");
   DefaultValue::Bind ("TimeStepPrecision", "FS");
 
-  return ok;
+
+  Time tooBig = TimeStep (0x8000000000000000LL);
+  NS_TEST_ASSERT (tooBig.IsNegative ());
+  tooBig = TimeStep (0xffffffffffffffffLL);
+  NS_TEST_ASSERT (tooBig.IsNegative ());
+  tooBig = TimeStep (0x7fffffffffffffffLL);
+  NS_TEST_ASSERT (tooBig.IsPositive ());
+  tooBig += TimeStep (1);
+  NS_TEST_ASSERT (tooBig.IsNegative ());
+
+  return result;
 }
 
 void TimeTests::CheckOld (bool *ok)