You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2006/11/04 04:58:55 UTC

svn commit: r471108 - in /lucene/lucy/trunk/charmonizer: ./ src/Charmonizer/ src/Charmonizer/Test/

Author: marvin
Date: Fri Nov  3 19:58:53 2006
New Revision: 471108

URL: http://svn.apache.org/viewvc?view=rev&rev=471108
Log:
Improve the TestBatch object.  Add a prepare() function to each test file
which returns a TestBatch object.  Tests are then executed by invoking the new
batch->run_test method, which wraps the actual test function and prints before
and after reports.

Modified:
    lucene/lucy/trunk/charmonizer/charm_test.c
    lucene/lucy/trunk/charmonizer/src/Charmonizer/Test.charm
    lucene/lucy/trunk/charmonizer/src/Charmonizer/Test.harm
    lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/FuncMacro.charm
    lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/Headers.charm
    lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/Integers.charm
    lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/LargeFiles.charm
    lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/UnusedVars.charm
    lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/VariadicMacros.charm

Modified: lucene/lucy/trunk/charmonizer/charm_test.c
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/charmonizer/charm_test.c?view=diff&rev=471108&r1=471107&r2=471108
==============================================================================
--- lucene/lucy/trunk/charmonizer/charm_test.c (original)
+++ lucene/lucy/trunk/charmonizer/charm_test.c Fri Nov  3 19:58:53 2006
@@ -1,49 +1,32 @@
 #include <stdio.h>
 #include "Charmonizer/Test.h"
 
-/* this is the signature for all Charmonizer test functions */
-typedef chaz_TestBatch*
-(*t_func)();
-
-/* create an array of test functions to loop through */
-typedef struct TestGroup {
-    const char *name;
-    t_func func;
-} TestGroup;
-TestGroup tests[] = {
-    { "FuncMacro", chaz_Test_test_FuncMacro },
-    { "Headers", chaz_Test_test_Headers },
-    { "Integers", chaz_Test_test_Integers },
-    { "LargeFiles", chaz_Test_test_LargeFiles },
-    { "UnusedVars", chaz_Test_test_UnusedVars },
-    { "VariadicMacros", chaz_Test_test_VariadicMacros },
-    { NULL, NULL }
-};
-
 int main() {
     int total_tests   = 0;
     int total_passed  = 0;
     int total_failed  = 0;
     int total_skipped = 0;
     int i;
+    chaz_TestBatch* batches[7];
 
     chaz_Test_init();
+
+    batches[0] = chaz_TFuncMacro_prepare();
+    batches[1] = chaz_THeaders_prepare();
+    batches[2] = chaz_TIntegers_prepare();
+    batches[3] = chaz_TLargeFiles_prepare();
+    batches[4] = chaz_TUnusedVars_prepare();
+    batches[5] = chaz_TVariadicMacros_prepare();
+    batches[6] = NULL;
     
     /* loop through test functions, accumulating results */
-    for (i = 0; tests[i].name != NULL; i++) {
-        t_func test_func = tests[i].func;
-        const char *name = tests[i].name;
-        chaz_TestBatch *batch = test_func();
-        printf("=========================\n");
-        printf("%s\n=========================\n", name);
+    for (i = 0; batches[i] != NULL; i++) {
+        chaz_TestBatch *batch = batches[i];
+        batch->run_test(batch);
         total_tests    += batch->num_tests;
         total_passed   += batch->num_passed;
         total_failed   += batch->num_failed;
         total_skipped  += batch->num_skipped;
-        printf("-------------------------\n");
-        printf("Tests:   %d\nPassed:  %d\nFailed:  %d\nSkipped: %d\n\n",
-            batch->num_tests, batch->num_passed, batch->num_failed, 
-            batch->num_skipped);
         batch->destroy(batch);
     }
     

Modified: lucene/lucy/trunk/charmonizer/src/Charmonizer/Test.charm
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/charmonizer/src/Charmonizer/Test.charm?view=diff&rev=471108&r1=471107&r2=471108
==============================================================================
--- lucene/lucy/trunk/charmonizer/src/Charmonizer/Test.charm (original)
+++ lucene/lucy/trunk/charmonizer/src/Charmonizer/Test.charm Fri Nov  3 19:58:53 2006
@@ -9,6 +9,9 @@
 static void
 TestBatch_destroy(TestBatch *batch);
 
+static void
+TestBatch_run_test(TestBatch *batch);
+
 void
 chaz_Test_init(void) {
 	int check_val = setvbuf(stdout, NULL, _IONBF, 0);
@@ -16,13 +19,16 @@
 		fprintf(stderr, "Failed when trying to unbuffer stdout\n");
 }
 
-TestBatch*
-chaz_Test_new_batch(unsigned num_tests)
+TestBatch* 
+chaz_Test_new_batch(const char *batch_name, unsigned num_tests,
+				    TestBatch_test_func_t test_func)
 {
     TestBatch *batch = (TestBatch*)malloc(sizeof(TestBatch));
 
     /* assign */
     batch->num_tests       = num_tests;
+	batch->name            = strdup(batch_name);
+	batch->test_func       = test_func;
     
     /* initialize */
     batch->test_num        = 0;
@@ -30,6 +36,7 @@
     batch->num_failed      = 0;
     batch->num_skipped     = 0;
     batch->destroy         = TestBatch_destroy;
+	batch->run_test        = TestBatch_run_test;
 
     return batch;
 }
@@ -37,7 +44,26 @@
 static void
 TestBatch_destroy(TestBatch *batch)
 {
+	free(batch->name);
     free(batch);
+}
+
+static void
+TestBatch_run_test(TestBatch *batch) 
+{
+	/* print start */
+	printf("===================================\n");
+	printf("%s - %u tests to run\n", batch->name, batch->num_tests);
+	printf("===================================\n");
+
+	/* run the batch */
+	batch->test_func(batch);
+
+	/* print report */
+	printf("-------------------------\n");
+	printf("Tests:   %d\nPassed:  %d\nFailed:  %d\nSkipped: %d\n\n",
+		batch->num_tests, batch->num_passed, batch->num_failed, 
+		batch->num_skipped);
 }
 
 void

Modified: lucene/lucy/trunk/charmonizer/src/Charmonizer/Test.harm
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/charmonizer/src/Charmonizer/Test.harm?view=diff&rev=471108&r1=471107&r2=471108
==============================================================================
--- lucene/lucy/trunk/charmonizer/src/Charmonizer/Test.harm (original)
+++ lucene/lucy/trunk/charmonizer/src/Charmonizer/Test.harm Fri Nov  3 19:58:53 2006
@@ -8,16 +8,32 @@
 
 typedef struct chaz_TestBatch chaz_TestBatch;
 
+/* Destructor.
+ */
 typedef void
 (*chaz_TestBatch_destroy_t)(chaz_TestBatch *batch);
 
+/* This function, which is unique to each TestBatch, actually runs the test
+ * script.
+ */
+typedef void
+(*chaz_TestBatch_test_func_t)(chaz_TestBatch *batch);
+
+/* Print a header, execute the test script, print a report.
+ */
+typedef void
+(*chaz_TestBatch_run_test_t)(chaz_TestBatch *batch);
+
 struct chaz_TestBatch {
-    unsigned test_num;
-    unsigned num_tests;
-    unsigned num_passed;
-    unsigned num_failed; 
-    unsigned num_skipped;
-    chaz_TestBatch_destroy_t destroy;
+    char         *name;
+    unsigned      test_num;
+    unsigned      num_tests;
+    unsigned      num_passed;
+    unsigned      num_failed; 
+    unsigned      num_skipped;
+    chaz_TestBatch_destroy_t      destroy;
+    chaz_TestBatch_test_func_t    test_func;
+    chaz_TestBatch_run_test_t     run_test;
 };
 
 /* Unbuffer stdout.  Perform any other setup needed.
@@ -25,10 +41,11 @@
 void
 chaz_Test_init(void);
 
-/* Constructor for TestBatch.  Will print a message to the screen.
+/* Constructor for TestBatch.
  */
-chaz_TestBatch*
-chaz_Test_new_batch(unsigned num_tests);
+chaz_TestBatch* 
+chaz_Test_new_batch(const char *batch_name, unsigned num_tests,
+				    chaz_TestBatch_test_func_t test_func);
 
 /* These tests all require the file charmony.h.  See the documentation for
  * Charmonizer/Probe.h for instructions on how to produce it.
@@ -47,22 +64,40 @@
  * fallbacks.
  */
 chaz_TestBatch* 
-chaz_Test_test_FuncMacro();
+chaz_TFuncMacro_prepare();
 
 chaz_TestBatch* 
-chaz_Test_test_Headers();
+chaz_THeaders_prepare();
 
 chaz_TestBatch* 
-chaz_Test_test_Integers();
+chaz_TIntegers_prepare();
 
 chaz_TestBatch* 
-chaz_Test_test_LargeFiles();
+chaz_TLargeFiles_prepare();
 
 chaz_TestBatch* 
-chaz_Test_test_UnusedVars();
+chaz_TUnusedVars_prepare();
 
 chaz_TestBatch* 
-chaz_Test_test_VariadicMacros();
+chaz_TVariadicMacros_prepare();
+
+void
+chaz_TFuncMacro_run(chaz_TestBatch *batch);
+
+void
+chaz_THeaders_run(chaz_TestBatch *batch);
+
+void
+chaz_TIntegers_run(chaz_TestBatch *batch);
+
+void
+chaz_TLargeFiles_run(chaz_TestBatch *batch);
+
+void
+chaz_TUnusedVars_run(chaz_TestBatch *batch);
+
+void
+chaz_TVariadicMacros_run(chaz_TestBatch *batch);
 
 /* Note: maybe add line numbers later.
  */
@@ -86,7 +121,7 @@
 #define CHAZ_TEST_SKIP_REMAINING(batch, message) \
     do { \
         chaz_Test_report_skip_remaining(batch, message); \
-        return batch; \
+        return; \
     } while (0)
 
 
@@ -127,19 +162,13 @@
 chaz_Test_report_skip_remaining(chaz_TestBatch* batch, 
                                     const char *pat, ...);
 
-
-
 #ifdef CHAZ_USE_SHORT_NAMES
+# define TestBatch_destroy_t          chaz_TestBatch_destroy_t
+# define TestBatch_test_func_t        chaz_TestBatch_test_func_t
+# define TestBatch_run_test_t         chaz_TestBatch_run_test_t
 # define TestBatch                    chaz_TestBatch
+# define Test_init                    chaz_Test_init
 # define Test_new_batch               chaz_Test_new_batch
-# define Test_test_FuncMacro          chaz_Test_test_FuncMacro
-# define Test_test_Integers           chaz_Test_test_Integers
-# define Test_test_LargeFiles         chaz_Test_test_LargeFiles
-# define Test_test_UnusedVars         chaz_Test_test_UnusedVars
-# define Test_test_VariadicMacros     chaz_Test_test_VariadicMacros
-# define Test_report                  chaz_Test_report
-# define Test_report_skip             chaz_Test_skip
-# define Test_report_skip_remaining   chaz_Test_report_skip_remaining
 # define ASSERT_TRUE                  CHAZ_TEST_ASSERT_TRUE
 # define ASSERT_FALSE                 CHAZ_TEST_ASSERT_FALSE
 # define ASSERT_STR_EQ                CHAZ_TEST_ASSERT_STR_EQ

Modified: lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/FuncMacro.charm
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/FuncMacro.charm?view=diff&rev=471108&r1=471107&r2=471108
==============================================================================
--- lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/FuncMacro.charm (original)
+++ lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/FuncMacro.charm Fri Nov  3 19:58:53 2006
@@ -5,26 +5,29 @@
 #include "Charmonizer/Test.h"
 
 TestBatch*
-chaz_Test_test_FuncMacro(void)
+chaz_TFuncMacro_prepare()
+{
+    return Test_new_batch("FuncMacro", 3, chaz_TFuncMacro_run);
+}
+
+void
+chaz_TFuncMacro_run(TestBatch *batch)
 {
-    TestBatch *batch = Test_new_batch(3);
 
 #ifdef HAS_FUNC_MACRO
-    ASSERT_STR_EQ(batch, Func_Macro, "chaz_Test_test_FuncMacro", 
+    ASSERT_STR_EQ(batch, Func_Macro, "chaz_TFuncMacro_run", 
         "Func_Macro");
 #endif
 
 #ifdef HAS_ISO_FUNC_MACRO
-    ASSERT_STR_EQ(batch, __func__, "chaz_Test_test_FuncMacro",
+    ASSERT_STR_EQ(batch, __func__, "chaz_TFuncMacro_run",
         "HAS_ISO_FUNC_MACRO");
 #endif
 
 #ifdef HAS_GNUC_FUNC_MACRO
-    ASSERT_STR_EQ(batch, __FUNCTION__, "chaz_Test_test_FuncMacro", 
+    ASSERT_STR_EQ(batch, __FUNCTION__, "chaz_TFuncMacro_run", 
         "HAS_GNUC_FUNC_MACRO");
 #endif
-    
-    return batch;
 }
 
 /**

Modified: lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/Headers.charm
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/Headers.charm?view=diff&rev=471108&r1=471107&r2=471108
==============================================================================
--- lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/Headers.charm (original)
+++ lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/Headers.charm Fri Nov  3 19:58:53 2006
@@ -129,10 +129,14 @@
 #endif
 
 TestBatch*
-chaz_Test_test_Headers()
+chaz_THeaders_prepare()
 {
-    TestBatch *batch = Test_new_batch(2);
+    return Test_new_batch("Headers", 2, chaz_THeaders_run);
+}
 
+void
+chaz_THeaders_run(TestBatch *batch)
+{
     PASS(batch, "Compiled successfully with all detected headers");
 
     /* don't bother checking all -- just use stdio as an example */
@@ -141,8 +145,6 @@
 #else
     FAIL(batch, "stdio.h should have been detected");
 #endif
-
-    return batch;
 }
 
 /**

Modified: lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/Integers.charm
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/Integers.charm?view=diff&rev=471108&r1=471107&r2=471108
==============================================================================
--- lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/Integers.charm (original)
+++ lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/Integers.charm Fri Nov  3 19:58:53 2006
@@ -9,10 +9,14 @@
 #endif
 
 TestBatch*
-chaz_Test_test_Integers()
+chaz_TIntegers_prepare()
 {
-    TestBatch *batch = Test_new_batch(37);
+    return Test_new_batch("Integers", 37, chaz_TIntegers_run);
+}
 
+void
+chaz_TIntegers_run(TestBatch *batch)
+{
     {
         long one= 1;
         long big_endian = !(*((char *)(&one)));
@@ -105,8 +109,6 @@
         ASSERT_STR_EQ(batch, buf, "18000000000000000000", "U64P");
     }
 #endif
-
-    return batch;
 }
 
 /**

Modified: lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/LargeFiles.charm
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/LargeFiles.charm?view=diff&rev=471108&r1=471107&r2=471108
==============================================================================
--- lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/LargeFiles.charm (original)
+++ lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/LargeFiles.charm Fri Nov  3 19:58:53 2006
@@ -10,9 +10,14 @@
 #include "Charmonizer/Test.h"
 
 TestBatch*
-chaz_Test_test_LargeFiles()
+chaz_TLargeFiles_prepare()
+{
+    return Test_new_batch("LargeFiles", 10, chaz_TLargeFiles_run);
+}
+
+void
+chaz_TLargeFiles_run(TestBatch *batch)
 {
-    TestBatch *batch = Test_new_batch(10);
     FILE *fh;
     off64_t offset;
     int check_val;
@@ -74,8 +79,6 @@
     if (fh != NULL)
         fclose(fh);
     remove("_charm_large_file_test");
-
-    return batch;
 }
 
 

Modified: lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/UnusedVars.charm
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/UnusedVars.charm?view=diff&rev=471108&r1=471107&r2=471108
==============================================================================
--- lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/UnusedVars.charm (original)
+++ lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/UnusedVars.charm Fri Nov  3 19:58:53 2006
@@ -4,9 +4,13 @@
 #include "Charmonizer/Test.h"
 
 TestBatch*
-chaz_Test_test_UnusedVars()
+chaz_TUnusedVars_prepare()
+{
+    return Test_new_batch("UnusedVars", 2, chaz_TUnusedVars_run);
+}
+void
+chaz_TUnusedVars_run(TestBatch *batch)
 {
-    TestBatch *batch = Test_new_batch(2);
 #ifdef Unused_Var
     PASS(batch, "Unused_Var macro is defined");
 #else
@@ -18,8 +22,6 @@
 #else
     FAIL(batch, "Unreachable_Return macro is defined");
 #endif
-
-    return batch;
 }
 
 /**

Modified: lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/VariadicMacros.charm
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/VariadicMacros.charm?view=diff&rev=471108&r1=471107&r2=471108
==============================================================================
--- lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/VariadicMacros.charm (original)
+++ lucene/lucy/trunk/charmonizer/src/Charmonizer/Test/VariadicMacros.charm Fri Nov  3 19:58:53 2006
@@ -6,9 +6,14 @@
 #include "Charmonizer/Test.h"
 
 TestBatch*
-chaz_Test_test_VariadicMacros()
+chaz_TVariadicMacros_prepare()
+{
+    return Test_new_batch("VariadicMacros", 4, chaz_TVariadicMacros_run);
+}
+
+void
+chaz_TVariadicMacros_run(TestBatch *batch)
 {
-    TestBatch *batch = Test_new_batch(4);
     char buf[10];
     chaz_bool_t really_has_var_macs = false;
 
@@ -44,8 +49,6 @@
 #endif
 
     ASSERT_TRUE(batch, really_has_var_macs, "either ISO or GNUC");
-
-    return batch;
 }
 
 /**