diff options
author | Josh Blum <josh@joshknows.com> | 2011-06-24 15:22:55 -0700 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2011-06-24 15:22:55 -0700 |
commit | 09ed8e69312cebe31b69af4f42a3b0417774cf04 (patch) | |
tree | d6b0401308b8fb3e4c8666ea002393b563ecc99c /host/tests/error_test.cpp | |
parent | 90271a6f6ef43ed6afa617ba74a70fbeb468e8f7 (diff) | |
download | uhd-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.cpp | 35 |
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 } |