diff options
-rw-r--r-- | examples/ExampleTest.cc | 2 | ||||
-rw-r--r-- | examples/getbaud.cc | 7 | ||||
-rw-r--r-- | uunit.h | 14 |
3 files changed, 23 insertions, 0 deletions
diff --git a/examples/ExampleTest.cc b/examples/ExampleTest.cc index aebe712..5b6d788 100644 --- a/examples/ExampleTest.cc +++ b/examples/ExampleTest.cc @@ -116,6 +116,8 @@ public: uASSERT_EQUAL(Speed::B230400, getBaud(230400)); uASSERT_EQUAL(Speed::B230400, getBaud(230401)); + + uASSERT_THROWS(exit_called, getBaud(42)); } void exceptionTests() diff --git a/examples/getbaud.cc b/examples/getbaud.cc index 2488fc1..24178fd 100644 --- a/examples/getbaud.cc +++ b/examples/getbaud.cc @@ -1,7 +1,14 @@ #include "getbaud.h" +#include <cstdlib> + Speed getBaud(int speed) { + if(speed == 42) + { + exit(42); + } + struct { int value; @@ -53,6 +53,11 @@ public: std::size_t id; }; + struct exit_called + { + int exit_value; + }; + //! Run test //! \param test_suite the name of a test suite or null for all. //! \param test_name the name of a test name inside a test suite. Only valid @@ -323,4 +328,13 @@ void report_result(const char* name, const char* file, bool success) std::function<void(const char*, const char*, bool)> uUnit::status_cb{report_result}; +extern "C" +{ +void exit(int i) +{ + throw uUnit::exit_called{i}; + while(1){} +} +} + #endif |