cute optional macros for the main function of a test

This commit is contained in:
Gwendolyn 2022-01-03 15:21:26 +01:00
parent c6280ddf85
commit 88d3836926
10 changed files with 38 additions and 49 deletions

View file

@ -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();
}
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);
})

View file

@ -99,8 +99,5 @@ void example_assertions() {
}
#ifndef XTEST_ALL_EXAMPLES
int main(int argc, char **argv) {
example_assertions();
return xtest_complete();
}
#endif
XTEST_RUN_MAIN(example_assertions)
#endif //XTEST_ALL_EXAMPLES

View file

@ -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
XTEST_RUN_MAIN(example_expect_assertions)
#endif

View file

@ -181,8 +181,5 @@ void example_fail() {
}
#ifndef XTEST_ALL_EXAMPLES
int main(int argc, char **argv) {
example_fail();
return xtest_complete();
}
#endif
XTEST_RUN_MAIN(example_fail)
#endif

View file

@ -39,8 +39,5 @@ void example_float() {
}
#ifndef XTEST_ALL_EXAMPLES
int main(int argc, char **argv) {
example_float();
return xtest_complete();
}
#endif
XTEST_RUN_MAIN(example_float)
#endif

View file

@ -96,8 +96,5 @@ void example_groups() {
}
#ifndef XTEST_ALL_EXAMPLES
int main(int argc, char **argv) {
example_groups();
return xtest_complete();
}
#endif
XTEST_RUN_MAIN(example_groups)
#endif

View file

@ -79,8 +79,5 @@ void example_parameterized() {
}
#ifndef XTEST_ALL_EXAMPLES
int main(int argc, char **argv) {
example_parameterized();
return xtest_complete();
}
#endif
XTEST_RUN_MAIN(example_parameterized)
#endif

View file

@ -54,8 +54,5 @@ void example_skip() {
}
#ifndef XTEST_ALL_EXAMPLES
int main(int argc, char **argv) {
example_skip();
return xtest_complete();
}
#endif
XTEST_RUN_MAIN(example_skip)
#endif

View file

@ -1,5 +1,4 @@
#include <setjmp.h>
#include <math.h>
#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;

11
xtest.h
View file

@ -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