From 88d383692642eac9113934c43c800c8f0b2edf26 Mon Sep 17 00:00:00 2001 From: Gwendolyn Date: Mon, 3 Jan 2022 15:21:26 +0100 Subject: [PATCH] cute optional macros for the main function of a test --- examples/all.c | 20 +++++++++----------- examples/assertions.c | 7 ++----- examples/expect_assertions.c | 7 ++----- examples/fail.c | 7 ++----- examples/float.c | 7 ++----- examples/groups.c | 7 ++----- examples/parameterized.c | 7 ++----- examples/skip.c | 7 ++----- xtest.c | 7 ++++--- xtest.h | 11 +++++++++++ 10 files changed, 38 insertions(+), 49 deletions(-) diff --git a/examples/all.c b/examples/all.c index 9d77b1a..e3e7958 100644 --- a/examples/all.c +++ b/examples/all.c @@ -9,14 +9,12 @@ void example_groups(); void example_parameterized(); void example_skip(); - -int main(int argc, char ** argv) { - xtest_run_group(example_assertions); - xtest_run_group(example_expect_assertions); - xtest_run_group(example_fail); - xtest_run_group(example_float); - xtest_run_group(example_groups); - xtest_run_group(example_parameterized); - xtest_run_group(example_skip); - return xtest_complete(); -} \ No newline at end of file +XTEST_MAIN({ + xtest_run_group(example_assertions); + xtest_run_group(example_expect_assertions); + xtest_run_group(example_fail); + xtest_run_group(example_float); + xtest_run_group(example_groups); + xtest_run_group(example_parameterized); + xtest_run_group(example_skip); +}) diff --git a/examples/assertions.c b/examples/assertions.c index 0cc5c9b..59b18a5 100644 --- a/examples/assertions.c +++ b/examples/assertions.c @@ -99,8 +99,5 @@ void example_assertions() { } #ifndef XTEST_ALL_EXAMPLES -int main(int argc, char **argv) { - example_assertions(); - return xtest_complete(); -} -#endif \ No newline at end of file +XTEST_RUN_MAIN(example_assertions) +#endif //XTEST_ALL_EXAMPLES diff --git a/examples/expect_assertions.c b/examples/expect_assertions.c index d435018..210dbd7 100644 --- a/examples/expect_assertions.c +++ b/examples/expect_assertions.c @@ -39,8 +39,5 @@ void example_expect_assertions() { } #ifndef XTEST_ALL_EXAMPLES -int main(int argc, char **argv) { - example_expect_assertions(); - return xtest_complete(); -} -#endif \ No newline at end of file +XTEST_RUN_MAIN(example_expect_assertions) +#endif diff --git a/examples/fail.c b/examples/fail.c index 5d70c02..29679d8 100644 --- a/examples/fail.c +++ b/examples/fail.c @@ -181,8 +181,5 @@ void example_fail() { } #ifndef XTEST_ALL_EXAMPLES -int main(int argc, char **argv) { - example_fail(); - return xtest_complete(); -} -#endif \ No newline at end of file +XTEST_RUN_MAIN(example_fail) +#endif diff --git a/examples/float.c b/examples/float.c index 9548c05..ed773f1 100644 --- a/examples/float.c +++ b/examples/float.c @@ -39,8 +39,5 @@ void example_float() { } #ifndef XTEST_ALL_EXAMPLES -int main(int argc, char **argv) { - example_float(); - return xtest_complete(); -} -#endif \ No newline at end of file +XTEST_RUN_MAIN(example_float) +#endif diff --git a/examples/groups.c b/examples/groups.c index b965ee3..6b427ff 100644 --- a/examples/groups.c +++ b/examples/groups.c @@ -96,8 +96,5 @@ void example_groups() { } #ifndef XTEST_ALL_EXAMPLES -int main(int argc, char **argv) { - example_groups(); - return xtest_complete(); -} -#endif \ No newline at end of file +XTEST_RUN_MAIN(example_groups) +#endif diff --git a/examples/parameterized.c b/examples/parameterized.c index 7289bde..189b4c2 100644 --- a/examples/parameterized.c +++ b/examples/parameterized.c @@ -79,8 +79,5 @@ void example_parameterized() { } #ifndef XTEST_ALL_EXAMPLES -int main(int argc, char **argv) { - example_parameterized(); - return xtest_complete(); -} -#endif \ No newline at end of file +XTEST_RUN_MAIN(example_parameterized) +#endif diff --git a/examples/skip.c b/examples/skip.c index 489f1ca..0f97a27 100644 --- a/examples/skip.c +++ b/examples/skip.c @@ -54,8 +54,5 @@ void example_skip() { } #ifndef XTEST_ALL_EXAMPLES -int main(int argc, char **argv) { - example_skip(); - return xtest_complete(); -} -#endif \ No newline at end of file +XTEST_RUN_MAIN(example_skip) +#endif diff --git a/xtest.c b/xtest.c index 92842be..274b344 100644 --- a/xtest.c +++ b/xtest.c @@ -1,5 +1,4 @@ #include -#include #define XTEST_SOURCE @@ -276,8 +275,10 @@ void xtest_assert_float(double expected, double actual, int precision, int invert, const char *expression, const char *file, int line) { - double epsilon = pow(10, -(precision)); - double diff = fabs(expected - actual); + double epsilon = 1.0; + for (int i = 0; i < precision; ++i) epsilon /= 10.0; + double diff = expected - actual; + if (diff < 0) diff = -diff; int equals = diff < epsilon; int failed = invert == equals; // invert = true: fail if equals, invert = false: fail if not equals if (!failed) return; diff --git a/xtest.h b/xtest.h index d7cd7e8..b9a37df 100644 --- a/xtest.h +++ b/xtest.h @@ -130,4 +130,15 @@ int xtest_complete(); #define xtest_assert_mem_is_not(actual, expected, len) xtest_assert_(memcmp(actual, expected, len) != 0, #actual " is not " #expected " (" #len " bytes)", NULL, NULL, 1) +#define XTEST_RUN_MAIN(fn) int main(int argc, char ** argv) { \ + fn(); \ + return xtest_complete(); \ + } + + +#define XTEST_MAIN(block) int main(int argc, char ** argv) { \ + block \ + return xtest_complete(); \ + } + #endif //XTEST_XTEST_H