Make YAZ checks Emacs friendly
[yaz-moved-to-github.git] / src / test.c
index 7d521b8..c186bc5 100644 (file)
@@ -1,8 +1,6 @@
-/*
- * Copyright (C) 1995-2005, Index Data ApS
+/* This file is part of the YAZ toolkit.
+ * Copyright (C) 1995-2009 Index Data
  * See the file LICENSE for details.
  * See the file LICENSE for details.
- *
- * $Id: test.c,v 1.8 2006-07-06 13:10:31 heikki Exp $
  */
 
 /** \file test.c
  */
 
 /** \file test.c
@@ -16,7 +14,9 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
+#if HAVE_UNISTSD_H
 #include <unistd.h>
 #include <unistd.h>
+#endif
 
 #include <yaz/test.h>
 #include <yaz/log.h>
 
 #include <yaz/test.h>
 #include <yaz/log.h>
 static FILE *test_fout = 0; /* can't use '= stdout' on some systems */
 static int test_total = 0;
 static int test_failed = 0;
 static FILE *test_fout = 0; /* can't use '= stdout' on some systems */
 static int test_total = 0;
 static int test_failed = 0;
+static int test_todo = 0;
 static int test_verbose = 1;
 static int test_verbose = 1;
-static char *test_prog = 0;
+static const char *test_prog = 0;
 static int log_tests = 0; 
 
 static int log_tests = 0; 
 
-static FILE *get_file()
+static FILE *get_file(void)
 {
     if (test_fout)
         return test_fout;
     return stdout;
 }
 
 {
     if (test_fout)
         return test_fout;
     return stdout;
 }
 
-static char *progname(char *argv0)
+static const char *progname(const char *argv0)
 {
 {
-    char *cp = strrchr(argv0, '/');
+    const char *cp = strrchr(argv0, '/');
     if (cp)
         return cp+1;
     cp = strrchr(argv0, '\\');
     if (cp)
         return cp+1;
     cp = strrchr(argv0, '\\');
@@ -106,31 +107,47 @@ void yaz_check_init1(int *argc_p, char ***argv_p)
 }
 
 /** \brief  Initialize the log system */
 }
 
 /** \brief  Initialize the log system */
-void yaz_check_init_log(char *argv0)
+void yaz_check_init_log(const char *argv0)
 {
     char logfilename[2048];
     log_tests = 1; 
     sprintf(logfilename,"%s.log", progname(argv0) );
 {
     char logfilename[2048];
     log_tests = 1; 
     sprintf(logfilename,"%s.log", progname(argv0) );
-    unlink(logfilename);
     yaz_log_init_file(logfilename);
     yaz_log_trunc();
 
 }
 
     yaz_log_init_file(logfilename);
     yaz_log_trunc();
 
 }
 
+void  yaz_check_inc_todo(void)
+{
+    test_todo++;
+}
+
 void yaz_check_term1(void)
 {
     /* summary */
     if (test_failed)
     {
 void yaz_check_term1(void)
 {
     /* summary */
     if (test_failed)
     {
-        if (test_verbose >= 1)
-            fprintf(get_file(), "%d out of %d tests failed for program %s\n",
+        if (test_verbose >= 1) {
+            if (test_todo)
+                fprintf(get_file(), "%d out of %d tests failed for program %s"
+                        " (%d TODO's remaining)\n",
+                    test_failed, test_total, test_prog,test_todo);
+            else
+                fprintf(get_file(), "%d out of %d tests failed for program %s\n",
                     test_failed, test_total, test_prog);
                     test_failed, test_total, test_prog);
+        }
     }
     else
     {
     }
     else
     {
-        if (test_verbose >= 2)
-            fprintf(get_file(), "%d tests passed for program %s\n",
+        if (test_verbose >= 2) {
+            if (test_todo)
+                fprintf(get_file(), "%d tests passed for program %s"
+                        " (%d TODO's remaining)\n",
+                    test_total, test_prog,test_todo);
+            else
+                fprintf(get_file(), "%d tests passed for program %s\n",
                     test_total, test_prog);
                     test_total, test_prog);
+        }
     }
     if (test_fout)
         fclose(test_fout);
     }
     if (test_fout)
         fclose(test_fout);
@@ -144,7 +161,7 @@ void yaz_check_eq1(int type, const char *file, int line,
 {
     char formstr[2048];
     
 {
     char formstr[2048];
     
-    if (type==YAZ_TEST_TYPE_OK) 
+    if (type == YAZ_TEST_TYPE_OK) 
         sprintf(formstr, "%.500s == %.500s ", left, right);
     else
         sprintf(formstr, "%.500s != %.500s\n %d != %d", left, right, lval,rval);
         sprintf(formstr, "%.500s == %.500s ", left, right);
     else
         sprintf(formstr, "%.500s != %.500s\n %d != %d", left, right, lval,rval);
@@ -155,7 +172,7 @@ void yaz_check_print1(int type, const char *file, int line,
                       const char *expr)
 {
     const char *msg = "unknown";
                       const char *expr)
 {
     const char *msg = "unknown";
-    int printit=1;
+    int printit = 1;
 
     test_total++;
     switch(type)
 
     test_total++;
     switch(type)
@@ -164,32 +181,36 @@ void yaz_check_print1(int type, const char *file, int line,
         test_failed++;
         msg = "FAILED";
         if (test_verbose < 1)
         test_failed++;
         msg = "FAILED";
         if (test_verbose < 1)
-            printit=0;
+            printit = 0;
         break;
     case YAZ_TEST_TYPE_OK:
         msg = "ok";
         if (test_verbose < 3)
         break;
     case YAZ_TEST_TYPE_OK:
         msg = "ok";
         if (test_verbose < 3)
-            printit=0;
+            printit = 0;
         break;
     }
         break;
     }
-    if (printit) {
-        fprintf(get_file(), "%s:%d %s: ", file, line, msg);
+    if (printit)
+    {
+        fprintf(get_file(), "%s:%d: %s: ", file, line, msg);
         fprintf(get_file(), "%s\n", expr);
     }
         fprintf(get_file(), "%s\n", expr);
     }
-    if (log_tests) {
+    if (log_tests)
+    {
         yaz_log(YLOG_LOG, "%s:%d %s: ", file, line, msg);
         yaz_log(YLOG_LOG, "%s:%d %s: ", file, line, msg);
-        yaz_log(YLOG_LOG, "%s\n", expr);
+        yaz_log(YLOG_LOG, "%s", expr);
     }
 }
 
 
     }
 }
 
 
-int yaz_test_get_verbosity(){
+int yaz_test_get_verbosity()
+{
     return test_verbose;
 }
 
 /*
  * Local variables:
  * c-basic-offset: 4
     return test_verbose;
 }
 
 /*
  * Local variables:
  * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
  * indent-tabs-mode: nil
  * End:
  * vim: shiftwidth=4 tabstop=8 expandtab
  * indent-tabs-mode: nil
  * End:
  * vim: shiftwidth=4 tabstop=8 expandtab