8475061136
thanks to Nico Werner, who did most of the porting work
51 lines
1.6 KiB
C++
51 lines
1.6 KiB
C++
#define DOCTEST_CONFIG_IMPLEMENT
|
|
#include <doctest/doctest.h>
|
|
|
|
#include "header.h"
|
|
|
|
int program();
|
|
void some_program_code(int argc, char** argv);
|
|
|
|
int main(int argc, char** argv) {
|
|
doctest::Context context;
|
|
|
|
// !!! THIS IS JUST AN EXAMPLE SHOWING HOW DEFAULTS/OVERRIDES ARE SET !!!
|
|
|
|
// defaults
|
|
context.addFilter("test-case-exclude", "*math*"); // exclude test cases with "math" in the name
|
|
context.setOption("rand-seed", 324); // if order-by is set to "rand" use this seed
|
|
context.setOption("order-by", "file"); // sort the test cases by file and line
|
|
|
|
context.applyCommandLine(argc, argv);
|
|
|
|
// overrides
|
|
context.setOption("no-breaks", true); // don't break in the debugger when assertions fail
|
|
|
|
int res = context.run(); // run queries, or run tests unless --no-run is specified
|
|
|
|
if(context.shouldExit()) // important - query flags (and --exit) rely on the user doing this
|
|
return res; // propagate the result of the tests
|
|
|
|
context.clearFilters(); // removes all filters added up to this point
|
|
|
|
int client_stuff_return_code = program();
|
|
some_program_code(argc, argv);
|
|
// your program - if the testing framework is integrated in your production code
|
|
|
|
return res + client_stuff_return_code; // the result from doctest is propagated here as well
|
|
}
|
|
|
|
TEST_CASE("[string] testing std::string") {
|
|
std::string a("omg");
|
|
CHECK(a == "omg");
|
|
}
|
|
|
|
TEST_CASE("[math] basic stuff") {
|
|
CHECK(6 > 5);
|
|
CHECK(6 > 7);
|
|
}
|
|
|
|
int program() {
|
|
printf("Program code.\n");
|
|
return EXIT_SUCCESS;
|
|
}
|