cleaned up stopwatch test and added it.
authorChris Koeritz <fred@gruntose.com>
Fri, 1 Mar 2013 02:14:23 +0000 (21:14 -0500)
committerChris Koeritz <fred@gruntose.com>
Fri, 1 Mar 2013 02:14:23 +0000 (21:14 -0500)
doc/headers/fmc_header.java
doc/headers/gnu_header.h
doc/headers/shell_header.txt
doc/headers/uva_header.java
nucleus/library/tests_timely/makefile
nucleus/library/tests_timely/test_stopwatch.cpp [new file with mode: 0644]

index bc60f6ad3be8e207211cef076454ff85aae8475e..fb76d4f7c6a150fe9a79b252ae64cc4e4ae0a9f7 100644 (file)
@@ -4,8 +4,7 @@
  * {extended information...}
  * @author Chris Koeritz
  * @copyright Copyright (c) 2012-$now By Feisty Meow Concerns, Ltd.
- * @license This file is free software; you can modify/redistribute it under the terms of the GNU
- *          General Public License. [ http://www.gnu.org/licenses/gpl.html ]
- * @contribute Feel free to send updates to: [ fred@feistymeow.org ]
+ * @license GNU General Public License -- http://www.gnu.org/licenses/gpl.html
+ * @contribute Feel free to send updates to: fred@feistymeow.org
  */
 
index 054630fa6855184c8ac769b1f35f3e74f1f3faae..5e74be08aad069af96fa3fae99464a96f7cfb25a 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef {NAME}_CLASS
-#define {NAME}_CLASS
+#ifndef NAMEOF_CLASS
+#define NAMEOF_CLASS
 
 //////////////
-// Name   : {class name}
+// Name   : THISCLASSNAME
 // Author : Chris Koeritz
 // Rights : Copyright (c) 2012-$now By Author
 //////////////
index 1f2dd32e79cf071903c9bc1d8d0ebc6c4c0194f7..15e2b440ca1d50ac41cd72074cb2b4890309314d 100644 (file)
@@ -2,9 +2,9 @@
 #!/usr/bin/perl
 #!/usr/bin/python
 ##############
-# Name   : {script name}
+# Name   : NAMEOFSCRIPT
 # Author : Chris Koeritz
-# Rights : Copyright (C) 2012-$now by Feisty Meow Concerns, Ltd.
+# Rights : Copyright (C) 2013-$now by Feisty Meow Concerns, Ltd.
 ##############
 # This script is free software; you can modify/redistribute it under the terms
 # of the GNU General Public License. [ http://www.gnu.org/licenses/gpl.html ]
index 55985ee938a51668f55d139282586e2f41bf54d6..c7481628ec85f343d4c18aa68801a462314331ad 100644 (file)
@@ -4,7 +4,6 @@
  * {extended information...}
  * @author Chris Koeritz
  * @copyright Copyright (c) 2012-$now By University of Virginia
- * @license This file is free software; you can modify and redistribute it under the terms of the
- *          Apache License v2.0: http://www.apache.org/licenses/LICENSE-2.0
+ * @license Apache License v2.0: http://www.apache.org/licenses/LICENSE-2.0
  */
 
index 3b91fe7bf73161cfdd7c1d82e07df88a1f7b21c0..a5e17ec038f63bafd12bb335b8251913ca379ca5 100644 (file)
@@ -2,7 +2,7 @@ include cpp/variables.def
 
 PROJECT = tests_timely
 TYPE = test
-TARGETS = test_earth_time.exe 
+TARGETS = test_earth_time.exe test_stopwatch.exe
 DEFINITIONS += USE_HOOPLE_DLLS
 LOCAL_LIBS_USED = unit_test application processes loggers configuration mathematics nodes \
   structures textual timely filesystem structures basis 
diff --git a/nucleus/library/tests_timely/test_stopwatch.cpp b/nucleus/library/tests_timely/test_stopwatch.cpp
new file mode 100644 (file)
index 0000000..6352cba
--- /dev/null
@@ -0,0 +1,89 @@
+//////////////
+// Name   : test_stopwatch
+// Author : Chris Koeritz
+// Rights : Copyright (c) 1991-$now By Author
+//////////////
+// This file is free software; you can modify/redistribute it under the terms
+// of the GNU General Public License. [ http://www.gnu.org/licenses/gpl.html ]
+// Feel free to send updates to: [ fred@gruntose.com ]
+//////////////
+
+#include <application/application_shell.h>
+#include <application/hoople_main.h>
+#include <basis/functions.h>
+#include <basis/guards.h>
+#include <loggers/console_logger.h>
+#include <loggers/critical_events.h>
+#include <loggers/program_wide_logger.h>
+#include <mathematics/chaos.h>
+#include <structures/static_memory_gremlin.h>
+#include <timely/stopwatch.h>
+#include <timely/time_control.h>
+
+using namespace basis;
+using namespace application;
+using namespace loggers;
+using namespace mathematics;
+using namespace structures;
+using namespace timely;
+
+#define DEBUG_TIMER
+
+// ACCEPT: acceptable timer deviation from the total time to wait.
+// NOTE: timer characteristics and the sleep characteristics for machines vary.
+// it may be necessary to play with ACCEPT to get this program to accept the
+// machine's particular characteristics.
+//#define ACCEPT 0.01
+//#define WIDER_ACCEPT 0.05
+//#define WIDEST_ACCEPT 0.20
+#define ACCEPT 0.9
+#define WIDER_ACCEPT 0.95
+#define WIDEST_ACCEPT 1.20
+
+#define LOG(s) EMERGENCY_LOG(program_wide_logger::get(), s)
+
+class test_stopwatch : public application_shell
+{
+public:
+  test_stopwatch() : application_shell() {}
+  DEFINE_CLASS_NAME("test_stopwatch");
+  virtual int execute();
+};
+
+int test_stopwatch::execute()
+{
+  stopwatch fred_time;
+  chaos randomizer;
+
+  int to_sleep = randomizer.inclusive(20, 100);
+    // needs longer ints for the last two checks...
+  fred_time.start();
+  time_control::sleep_ms(to_sleep);
+  fred_time.halt();
+#ifdef DEBUG_TIMER
+  LOG(a_sprintf("sleep of %0.3f seconds took %d milliseconds\n",
+      float(to_sleep) / 1000.0, fred_time.milliseconds()));
+#endif
+  if (absolute_value(to_sleep - fred_time.milliseconds())
+      > ACCEPT * to_sleep)
+    deadly_error(class_name(), "first", "unacceptable timer deviation");
+  fred_time.reset();
+
+  to_sleep = randomizer.inclusive(76, 420);
+  fred_time.start();
+  time_control::sleep_ms(to_sleep);
+  fred_time.halt();
+#ifdef DEBUG_TIMER
+  LOG(a_sprintf("sleep of %0.3f seconds took %d milliseconds\n",
+      float(to_sleep) / 1000.0, fred_time.milliseconds()));
+#endif
+  if (absolute_value(to_sleep - fred_time.milliseconds()) > ACCEPT * to_sleep)
+    deadly_error(class_name(), "second", "unacceptable timer deviation");
+  fred_time.reset();
+
+  critical_events::alert_message("stopwatch:: works for those functions tested.");
+  return 0;
+}
+
+HOOPLE_MAIN(test_stopwatch, )
+