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;
}
/**