onqtam | 4a65563 | 2016-05-26 14:20:52 +0300 | [diff] [blame] | 1 | #define DOCTEST_CONFIG_IMPLEMENT |
| 2 | #include "doctest.h" |
| 3 | |
onqtam | 7cc0e96 | 2017-04-17 23:30:36 +0300 | [diff] [blame] | 4 | #include "header.h" |
| 5 | |
Martin Moene | 2e66b61 | 2016-05-30 17:18:44 +0200 | [diff] [blame] | 6 | int program(); |
| 7 | |
onqtam | 4a65563 | 2016-05-26 14:20:52 +0300 | [diff] [blame] | 8 | int main(int argc, char** argv) { |
onqtam | cfce188 | 2017-04-02 17:31:55 +0300 | [diff] [blame] | 9 | doctest::Context context; |
| 10 | |
| 11 | // !!! THIS IS JUST AN EXAMPLE SHOWING HOW DEFAULTS/OVERRIDES ARE SET !!! |
onqtam | 7d5c0d5 | 2016-06-02 17:50:59 +0300 | [diff] [blame] | 12 | |
| 13 | // defaults |
| 14 | context.addFilter("test-case-exclude", "*math*"); // exclude test cases with "math" in the name |
onqtam | 89da654 | 2017-05-02 21:10:42 +0300 | [diff] [blame] | 15 | context.setOption("rand-seed", 324); // if order-by is set to "rand" ise this seed |
| 16 | context.setOption("order-by", "file"); // sort the test cases by file and line |
onqtam | 7d5c0d5 | 2016-06-02 17:50:59 +0300 | [diff] [blame] | 17 | |
| 18 | context.applyCommandLine(argc, argv); |
onqtam | 4a65563 | 2016-05-26 14:20:52 +0300 | [diff] [blame] | 19 | |
| 20 | // overrides |
onqtam | 4a65563 | 2016-05-26 14:20:52 +0300 | [diff] [blame] | 21 | context.setOption("no-breaks", true); // don't break in the debugger when assertions fail |
onqtam | 4a65563 | 2016-05-26 14:20:52 +0300 | [diff] [blame] | 22 | |
Martin Moene | 2e66b61 | 2016-05-30 17:18:44 +0200 | [diff] [blame] | 23 | int res = context.run(); // run queries, or run tests unless --no-run is specified |
onqtam | 4a65563 | 2016-05-26 14:20:52 +0300 | [diff] [blame] | 24 | |
onqtam | 7ffa84e | 2016-05-30 18:42:20 +0300 | [diff] [blame] | 25 | if(context.shouldExit()) // important - query flags (and --exit) rely on the user doing this |
onqtam | 4a65563 | 2016-05-26 14:20:52 +0300 | [diff] [blame] | 26 | return res; // propagate the result of the tests |
| 27 | |
onqtam | 89da654 | 2017-05-02 21:10:42 +0300 | [diff] [blame] | 28 | context.clearFilters(); // removes all filters added up to this point |
| 29 | |
Martin Moene | 2e66b61 | 2016-05-30 17:18:44 +0200 | [diff] [blame] | 30 | int client_stuff_return_code = program(); |
onqtam | 4a65563 | 2016-05-26 14:20:52 +0300 | [diff] [blame] | 31 | // your program - if the testing framework is integrated in your production code |
| 32 | |
onqtam | 96bdf71 | 2016-09-13 16:45:52 +0300 | [diff] [blame] | 33 | return res + client_stuff_return_code; // the result from doctest is propagated here as well |
onqtam | 4a65563 | 2016-05-26 14:20:52 +0300 | [diff] [blame] | 34 | } |
| 35 | |
onqtam | 4a65563 | 2016-05-26 14:20:52 +0300 | [diff] [blame] | 36 | TEST_CASE("[string] testing std::string") { |
| 37 | std::string a("omg"); |
| 38 | CHECK(a == "omg"); |
| 39 | } |
| 40 | |
| 41 | TEST_CASE("[math] basic stuff") { |
| 42 | CHECK(6 > 5); |
| 43 | CHECK(6 > 7); |
| 44 | } |
Martin Moene | 2e66b61 | 2016-05-30 17:18:44 +0200 | [diff] [blame] | 45 | |
| 46 | int program() { |
onqtam | 4fe9a87 | 2016-05-30 18:51:00 +0300 | [diff] [blame] | 47 | printf("Program code.\n"); |
Martin Moene | 2e66b61 | 2016-05-30 17:18:44 +0200 | [diff] [blame] | 48 | return EXIT_SUCCESS; |
| 49 | } |