diff options
author | Aaron Rossetto <aaron.rossetto@ni.com> | 2020-03-18 07:31:16 -0500 |
---|---|---|
committer | Aaron Rossetto <aaron.rossetto@ni.com> | 2020-03-18 07:43:20 -0500 |
commit | b12c3b203773649e61f61344829924ab7ad43110 (patch) | |
tree | d3b425d01f2239ec73cc8378e51d323ec111ac08 /host/tests | |
parent | 5fb585c328a45b022744e884ec9d52808a9354cb (diff) | |
download | uhd-b12c3b203773649e61f61344829924ab7ad43110.tar.gz uhd-b12c3b203773649e61f61344829924ab7ad43110.tar.bz2 uhd-b12c3b203773649e61f61344829924ab7ad43110.zip |
utils: Add bool specialization to cast::from_str()
This adds a specialization to `uhd::cast::from_str()` to handle `bool`
as a target type and interpret strings like 'y', 'Y', 'n', 'No', 'True',
'False', etc. as Boolean values, as well as the traditional '0' and '1'
(which also work).
Diffstat (limited to 'host/tests')
-rw-r--r-- | host/tests/cast_test.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/host/tests/cast_test.cpp b/host/tests/cast_test.cpp index 9f7941a1d..556cb94a0 100644 --- a/host/tests/cast_test.cpp +++ b/host/tests/cast_test.cpp @@ -27,4 +27,24 @@ BOOST_AUTO_TEST_CASE(test_from_str) BOOST_CHECK_EQUAL(5.0, from_str<double>("5.0")); BOOST_CHECK_EQUAL(23, from_str<int>("23")); BOOST_CHECK_EQUAL("foo", from_str<std::string>("foo")); + + BOOST_CHECK_EQUAL(true, from_str<bool>("true")); + BOOST_CHECK_EQUAL(true, from_str<bool>("True")); + BOOST_CHECK_EQUAL(true, from_str<bool>("Y")); + BOOST_CHECK_EQUAL(true, from_str<bool>("y")); + BOOST_CHECK_EQUAL(true, from_str<bool>("YES")); + BOOST_CHECK_EQUAL(true, from_str<bool>("yEs")); + BOOST_CHECK_EQUAL(true, from_str<bool>("1")); + + BOOST_CHECK_EQUAL(false, from_str<bool>("false")); + BOOST_CHECK_EQUAL(false, from_str<bool>("False")); + BOOST_CHECK_EQUAL(false, from_str<bool>("n")); + BOOST_CHECK_EQUAL(false, from_str<bool>("N")); + BOOST_CHECK_EQUAL(false, from_str<bool>("No")); + BOOST_CHECK_EQUAL(false, from_str<bool>("nO")); + BOOST_CHECK_EQUAL(false, from_str<bool>("0")); + + BOOST_CHECK_THROW(from_str<bool>(""), uhd::runtime_error); + BOOST_CHECK_THROW(from_str<bool>("abc"), uhd::runtime_error); + BOOST_CHECK_THROW(from_str<bool>("deadbeef"), uhd::runtime_error); } |