diff options
author | Aaron Rossetto <aaron.rossetto@ni.com> | 2019-08-28 08:32:00 -0500 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2019-11-26 12:21:31 -0800 |
commit | cb9329a681552e6ac6277d16e1627afcbb23e637 (patch) | |
tree | bb87fc4362cb0d683ed41259498888fa71f15d36 /host/tests/property_test.cpp | |
parent | 4f130e3c129111cb8fb044a5cbc007df3628978c (diff) | |
download | uhd-cb9329a681552e6ac6277d16e1627afcbb23e637.tar.gz uhd-cb9329a681552e6ac6277d16e1627afcbb23e637.tar.bz2 uhd-cb9329a681552e6ac6277d16e1627afcbb23e637.zip |
uhd: Check property type at access; error if mismatch
Diffstat (limited to 'host/tests/property_test.cpp')
-rw-r--r-- | host/tests/property_test.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/host/tests/property_test.cpp b/host/tests/property_test.cpp index 907ca9f73..732e3ca84 100644 --- a/host/tests/property_test.cpp +++ b/host/tests/property_test.cpp @@ -239,7 +239,6 @@ BOOST_AUTO_TEST_CASE(test_prop_subtree) tree_dirs2.begin(), tree_dirs2.end(), subtree2_dirs.begin(), subtree2_dirs.end()); } - BOOST_AUTO_TEST_CASE(test_prop_operators) { uhd::fs_path path1 = "/root/"; @@ -259,3 +258,22 @@ BOOST_AUTO_TEST_CASE(test_prop_operators) path4 = path4 / x; BOOST_CHECK_EQUAL(path4, "/root/2"); } + +BOOST_AUTO_TEST_CASE(test_mismatched_type_access) +{ + uhd::property_tree::sptr tree = uhd::property_tree::make(); + + // accesses of the correct type should succeed + tree->create<int>("/intprop"); + tree->create<double>("/doubleprop"); + tree->create<std::string>("/stringprop"); + BOOST_CHECK_NO_THROW(tree->access<int>("/intprop")); + BOOST_CHECK_NO_THROW(tree->access<double>("/doubleprop")); + BOOST_CHECK_NO_THROW(tree->access<std::string>("/stringprop")); + + // accesses of the incorrect type should throw an exception + BOOST_CHECK_THROW(tree->access<int>("/doubleprop"), uhd::runtime_error); + BOOST_CHECK_THROW(tree->access<double>("/stringprop"), uhd::runtime_error); + BOOST_CHECK_THROW(tree->access<std::string>("/intprop"), uhd::runtime_error); +} + |