aboutsummaryrefslogtreecommitdiffstats
path: root/host/tests/error_test.cpp
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2011-06-24 15:22:55 -0700
committerJosh Blum <josh@joshknows.com>2011-06-24 15:22:55 -0700
commit09ed8e69312cebe31b69af4f42a3b0417774cf04 (patch)
treed6b0401308b8fb3e4c8666ea002393b563ecc99c /host/tests/error_test.cpp
parent90271a6f6ef43ed6afa617ba74a70fbeb468e8f7 (diff)
downloaduhd-09ed8e69312cebe31b69af4f42a3b0417774cf04.tar.gz
uhd-09ed8e69312cebe31b69af4f42a3b0417774cf04.tar.bz2
uhd-09ed8e69312cebe31b69af4f42a3b0417774cf04.zip
uhd: added dynamic throw and clone to exceptions
Diffstat (limited to 'host/tests/error_test.cpp')
-rw-r--r--host/tests/error_test.cpp35
1 files changed, 33 insertions, 2 deletions
diff --git a/host/tests/error_test.cpp b/host/tests/error_test.cpp
index 983f0150c..69437e732 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,37 @@ 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){
+ BOOST_CHECK(false);
}
+ catch(const uhd::runtime_error &e){
+ BOOST_CHECK(true);
+ }
+ catch(const uhd::exception &e){
+ BOOST_CHECK(false);
+ }
+
+ delete exception_clone; //manual cleanup
}