Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
chasing minor smells
[simgrid.git] / src / xbt / cunit.cpp
index 1cfd7f8..94e16a6 100644 (file)
 #include "src/internal_config.h"
 #include <stdio.h>
 
+#include <xbt/ex.hpp>
 #include "xbt/sysdep.h"         /* bvprintf */
 #include "xbt/cunit.h"
 #include "xbt/dynar.h"
 
 /* collection of all suites */
-static xbt_dynar_t _xbt_test_suites = NULL;
+static xbt_dynar_t _xbt_test_suites = nullptr;
 /* global statistics */
 static int _xbt_test_nb_tests = 0;
 static int _xbt_test_test_failed = 0;
@@ -35,7 +36,7 @@ static int _xbt_test_suite_ignore = 0;
 static int _xbt_test_suite_disabled = 0;
 
 /* Context */
-xbt_test_unit_t _xbt_test_current_unit = NULL;
+xbt_test_unit_t _xbt_test_current_unit = nullptr;
 
 /* test suite test log */
 typedef struct s_xbt_test_log {
@@ -49,7 +50,7 @@ static void xbt_test_log_dump(xbt_test_log_t log)
   if (log)
     fprintf(stderr, "      log %p(%s:%d)=%s\n", log, log->file, log->line, log->text);
   else
-    fprintf(stderr, "      log=NULL\n");
+    fprintf(stderr, "      log=nullptr\n");
 }
 
 /* test suite test check */
@@ -73,7 +74,7 @@ static void xbt_test_test_dump(xbt_test_test_t test)
     xbt_dynar_foreach(test->logs, it_log, log)
         xbt_test_log_dump(log);
   } else
-    fprintf(stderr, "    test=NULL\n");
+    fprintf(stderr, "    test=nullptr\n");
 }
 
 /* test suite test unit */
@@ -87,7 +88,9 @@ struct s_xbt_test_unit {
   xbt_dynar_t tests;            /* of xbt_test_test_t */
 
   int nb_tests;
-  int test_failed, test_ignore, test_expect;
+  int test_failed;
+  int test_ignore;
+  int test_expect;
 };
 
 static void xbt_test_unit_dump(xbt_test_unit_t unit)
@@ -100,7 +103,7 @@ static void xbt_test_unit_dump(xbt_test_unit_t unit)
       xbt_dynar_foreach(unit->tests, it_test, test)
           xbt_test_test_dump(test);
   } else {
-    fprintf(stderr, "  unit=NULL\n");
+    fprintf(stderr, "  unit=nullptr\n");
   }
 }
 
@@ -111,9 +114,14 @@ struct s_xbt_test_suite {
   char *title;
   xbt_dynar_t units;            /* of xbt_test_unit_t */
 
-  int nb_tests, nb_units;
-  int test_failed, test_ignore, test_expect;
-  int unit_failed, unit_ignore, unit_disabled;
+  int nb_tests;
+  int nb_units;
+  int test_failed;
+  int test_ignore;
+  int test_expect;
+  int unit_failed;
+  int unit_ignore;
+  int unit_disabled;
 };
 
 /* destroy test suite */
@@ -121,7 +129,7 @@ static void xbt_test_suite_free(void *s)
 {
   xbt_test_suite_t suite = *(xbt_test_suite_t *) s;
 
-  if (suite == NULL)
+  if (suite == nullptr)
     return;
   xbt_dynar_free(&suite->units);
   free(suite->title);
@@ -190,7 +198,7 @@ xbt_test_suite_t xbt_test_suite_by_name(const char *name, const char *fmt, ...)
   va_start(ap, fmt);
   bufname = bvprintf(fmt, ap);
   va_end(ap);
-  suite = xbt_test_suite_new(name, bufname, NULL);
+  suite = xbt_test_suite_new(name, bufname, nullptr);
   free(bufname);
 
   return suite;
@@ -206,7 +214,7 @@ void xbt_test_suite_dump(xbt_test_suite_t suite)
       xbt_dynar_foreach(suite->units, it_unit, unit)
           xbt_test_unit_dump(unit);
   } else {
-    fprintf(stderr, "TESTSUITE IS NULL!\n");
+    fprintf(stderr, "TESTSUITE IS nullptr!\n");
   }
 }
 
@@ -226,13 +234,12 @@ void xbt_test_suite_push(xbt_test_suite_t suite, const char *name, ts_test_cb_t
   va_end(ap);
   unit->name = (char *) name;
   unit->func = func;
-  unit->file = NULL;
+  unit->file = nullptr;
   unit->line = 0;
   unit->enabled = 1;
   unit->tests = xbt_dynar_new(sizeof(xbt_test_test_t), xbt_test_test_free);
 
   xbt_dynar_push(suite->units, &unit);
-  return;
 }
 
 /* run test one suite */
@@ -245,33 +252,32 @@ static int xbt_test_suite_run(xbt_test_suite_t suite, int verbosity)
   const char *file;
   int line;
   char *cp;
-  unsigned int it_unit, it_test, it_log;
+  unsigned int it_unit;
+  unsigned int it_test;
+  unsigned int it_log;
 
   int first = 1;                /* for result pretty printing */
 
-  if (suite == NULL)
+  if (suite == nullptr)
     return 0;
 
   /* suite title pretty-printing */
-  {
-    char suite_title[81];
-    int suite_len = strlen(suite->title);
-    int i;
-
-    xbt_assert(suite_len < 68, "suite title \"%s\" too long (%d should be less than 68", suite->title, suite_len);
-
-    suite_title[0] = ' ';
-    for (i = 1; i < 80; i++)
-      suite_title[i] = '=';
-    suite_title[i++] = '\n';
-    suite_title[80] = '\0';
-
-    snprintf(suite_title + 40 - (suite_len + 4) / 2, 81-(40 - (suite_len + 4)/ 2), "[ %s ]", suite->title);
-    suite_title[40 + (suite_len + 5) / 2] = '=';
-    if (!suite->enabled)
-      snprintf(suite_title + 70, 11, " DISABLED ");
-    fprintf(stderr, "\n%s\n", suite_title);
-  }
+  char suite_title[81];
+  int suite_len = strlen(suite->title);
+
+  xbt_assert(suite_len < 68, "suite title \"%s\" too long (%d should be less than 68", suite->title, suite_len);
+
+  suite_title[0] = ' ';
+  for (int i = 1; i < 79; i++)
+    suite_title[i] = '=';
+  suite_title[79]  = '\n';
+  suite_title[80]  = '\0';
+
+  snprintf(suite_title + 40 - (suite_len + 4) / 2, 81 - (40 - (suite_len + 4) / 2), "[ %s ]", suite->title);
+  suite_title[40 + (suite_len + 5) / 2] = '=';
+  if (!suite->enabled)
+    snprintf(suite_title + 70, 11, " DISABLED ");
+  fprintf(stderr, "\n%s\n", suite_title);
 
   if (suite->enabled) {
     /* iterate through all tests */
@@ -320,14 +326,27 @@ static int xbt_test_suite_run(xbt_test_suite_t suite, int verbosity)
           fprintf(stderr, ".... skip\n");       /* shouldn't happen, but I'm a bit lost with this logic */
         }
         xbt_dynar_foreach(unit->tests, it_test, test) {
-          file = (test->file != NULL ? test->file : unit->file);
+          file = (test->file != nullptr ? test->file : unit->file);
           line = (test->line != 0 ? test->line : unit->line);
-          fprintf(stderr, "      %s: %s [%s:%d]\n", (test->ignored ? " SKIP" : (test->expected_failure
-                  ? (test-> failed ? "EFAIL" : "EPASS") : (test->failed ? " FAIL" : " PASS"))),test->title, file, line);
+          const char* resname;
+          if (test->ignored)
+            resname = " SKIP";
+          else if (test->expected_failure) {
+            if (test->failed)
+              resname = "EFAIL";
+            else
+              resname = "EPASS";
+          } else {
+            if (test->failed)
+              resname = " FAIL";
+            else
+              resname = " PASS";
+          }
+          fprintf(stderr, "      %s: %s [%s:%d]\n", resname, test->title, file, line);
 
           if ((test->expected_failure && !test->failed) || (!test->expected_failure && test->failed)) {
             xbt_dynar_foreach(test->logs, it_log, log) {
-              file = (log->file != NULL ? log->file : file);
+              file = (log->file != nullptr ? log->file : file);
               line = (log->line != 0 ? log->line : line);
               fprintf(stderr, "             %s:%d: %s\n", file, line, log->text);
             }
@@ -582,7 +601,7 @@ int xbt_test_run(char *selection, int verbosity)
             ? ((1 - (double) _xbt_test_unit_failed / (double) _xbt_test_nb_units) * 100.0) : 100.0, _xbt_test_nb_units);
     first = 1;
     if (_xbt_test_nb_units != _xbt_test_unit_failed) {
-      fprintf(stderr, "%s%d ok", (first ? "" : ", "), _xbt_test_nb_units - _xbt_test_unit_failed);
+      fprintf(stderr, "%d ok", _xbt_test_nb_units - _xbt_test_unit_failed);
       first = 0;
     }
     if (_xbt_test_unit_failed) {
@@ -596,7 +615,7 @@ int xbt_test_run(char *selection, int verbosity)
             ? ((1 - (double) _xbt_test_test_failed / (double) _xbt_test_nb_tests) * 100.0) : 100.0, _xbt_test_nb_tests);
     first = 1;
     if (_xbt_test_nb_tests != _xbt_test_test_failed) {
-      fprintf(stderr, "%s%d ok", (first ? "" : ", "), _xbt_test_nb_tests - _xbt_test_test_failed);
+      fprintf(stderr, "%d ok", _xbt_test_nb_tests - _xbt_test_test_failed);
       first = 0;
     }
     if (_xbt_test_test_failed) {
@@ -619,7 +638,7 @@ int xbt_test_run(char *selection, int verbosity)
   return _xbt_test_unit_failed;
 }
 
-void xbt_test_exit(void)
+void xbt_test_exit()
 {
   xbt_dynar_free(&_xbt_test_suites);
 }
@@ -642,7 +661,6 @@ void _xbt_test_add(const char *file, int line, const char *fmt, ...)
   test->line = line;
   test->logs = xbt_dynar_new(sizeof(xbt_test_log_t), xbt_test_log_free);
   xbt_dynar_push(unit->tests, &test);
-  return;
 }
 
 /* annotate test case with log message and failure */
@@ -669,10 +687,10 @@ void _xbt_test_fail(const char *file, int line, const char *fmt, ...)
 
 void xbt_test_exception(xbt_ex_t e)
 {
-  _xbt_test_fail(e.file, e.line, "Exception %s raised: %s", xbt_ex_catname(e.category), e.what());
+  _xbt_test_fail(e.throwPoint().file, e.throwPoint().line, "Exception %s raised: %s", xbt_ex_catname(e.category), e.what());
 }
 
-void xbt_test_expect_failure(void)
+void xbt_test_expect_failure()
 {
   xbt_assert(xbt_dynar_length(_xbt_test_current_unit->tests),
       "Cannot expect the failure of a test before declaring it (broken unit: %s)", _xbt_test_current_unit->title);
@@ -680,7 +698,7 @@ void xbt_test_expect_failure(void)
   test->expected_failure = 1;
 }
 
-void xbt_test_skip(void)
+void xbt_test_skip()
 {
   xbt_assert(xbt_dynar_length(_xbt_test_current_unit->tests),
       "Test skipped even before being declared (broken unit: %s)", _xbt_test_current_unit->title);