summaryrefslogtreecommitdiffstats
path: root/host/tests
diff options
context:
space:
mode:
Diffstat (limited to 'host/tests')
-rw-r--r--host/tests/error_test.cpp38
1 files changed, 36 insertions, 2 deletions
diff --git a/host/tests/error_test.cpp b/host/tests/error_test.cpp
index 983f0150c..3d784b1f7 100644
--- a/host/tests/error_test.cpp
+++ b/host/tests/error_test.cpp
@@ -44,7 +44,8 @@ BOOST_AUTO_TEST_CASE(test_assert_has){
std::cout << "The output of the assert_has error:" << std::endl;
try{
uhd::assert_has(vec, 1, "prime");
- }catch(const std::exception &e){
+ }
+ catch(const std::exception &e){
std::cout << e.what() << std::endl;
}
}
@@ -53,7 +54,40 @@ BOOST_AUTO_TEST_CASE(test_assert_throw){
std::cout << "The output of the assert throw error:" << std::endl;
try{
UHD_ASSERT_THROW(2 + 2 == 5);
- }catch(const std::exception &e){
+ }
+ catch(const std::exception &e){
std::cout << e.what() << std::endl;
}
}
+
+BOOST_AUTO_TEST_CASE(test_exception_dynamic){
+ uhd::exception *exception_clone;
+
+ //throw an exception and dynamically clone it
+ try{
+ throw uhd::runtime_error("noooooo");
+ }
+ catch(const uhd::exception &e){
+ std::cout << e.what() << std::endl;
+ exception_clone = e.dynamic_clone();
+ }
+
+ //now we dynamically re-throw the exception
+ try{
+ exception_clone->dynamic_throw();
+ }
+ catch(const uhd::assertion_error &e){
+ std::cout << e.what() << std::endl;
+ BOOST_CHECK(false);
+ }
+ catch(const uhd::runtime_error &e){
+ std::cout << e.what() << std::endl;
+ BOOST_CHECK(true);
+ }
+ catch(const uhd::exception &e){
+ std::cout << e.what() << std::endl;
+ BOOST_CHECK(false);
+ }
+
+ delete exception_clone; //manual cleanup
+}