diff options
author | Lane Kolbly <lane.kolbly@ni.com> | 2020-06-22 18:06:38 -0500 |
---|---|---|
committer | Aaron Rossetto <aaron.rossetto@ni.com> | 2020-06-25 13:36:08 -0500 |
commit | d6cb55ef08f51c9ebef57e5bbcb95b03a65972a9 (patch) | |
tree | 8b8f1350d9d45d513f00e2b8e836a52600d27e66 /host/tests | |
parent | e9ae5fb949903cce1720b75b894401930cce1ebe (diff) | |
download | uhd-d6cb55ef08f51c9ebef57e5bbcb95b03a65972a9.tar.gz uhd-d6cb55ef08f51c9ebef57e5bbcb95b03a65972a9.tar.bz2 uhd-d6cb55ef08f51c9ebef57e5bbcb95b03a65972a9.zip |
uhd: Create discoverable feature registry implementation
Classes which want to implement discoverable_feature can simply inherit
from this registry and get access to an ergonomic map-backed registry of
features.
Diffstat (limited to 'host/tests')
-rw-r--r-- | host/tests/CMakeLists.txt | 7 | ||||
-rw-r--r-- | host/tests/discoverable_feature_test.cpp | 51 |
2 files changed, 23 insertions, 35 deletions
diff --git a/host/tests/CMakeLists.txt b/host/tests/CMakeLists.txt index 47ca5b79f..6626b9c3a 100644 --- a/host/tests/CMakeLists.txt +++ b/host/tests/CMakeLists.txt @@ -32,7 +32,6 @@ set(test_sources constrained_device_args_test.cpp convert_test.cpp dict_test.cpp - discoverable_feature_test.cpp eeprom_utils_test.cpp error_test.cpp fp_compare_delta_test.cpp @@ -339,6 +338,12 @@ UHD_ADD_NONAPI_TEST( ${CMAKE_SOURCE_DIR}/lib/usrp/common/pwr_cal_mgr.cpp ) +UHD_ADD_NONAPI_TEST( + TARGET "discoverable_feature_test.cpp" + EXTRA_SOURCES + ${CMAKE_SOURCE_DIR}/lib/features/discoverable_feature_registry.cpp +) + ######################################################################## # demo of a loadable module ######################################################################## diff --git a/host/tests/discoverable_feature_test.cpp b/host/tests/discoverable_feature_test.cpp index b75cb76f3..e35660392 100644 --- a/host/tests/discoverable_feature_test.cpp +++ b/host/tests/discoverable_feature_test.cpp @@ -5,6 +5,7 @@ // #include <uhd/features/discoverable_feature_getter_iface.hpp> +#include <uhdlib/features/discoverable_feature_registry.hpp> #include <boost/test/unit_test.hpp> #include <iostream> @@ -38,43 +39,16 @@ public: } }; -class test_feature_getter : public discoverable_feature_getter_iface +class test_feature_getter : public discoverable_feature_registry { public: test_feature_getter(bool feature0_enabled, bool feature1_enabled) { if (feature0_enabled) - _test_feature0.reset(new test_feature0()); + register_feature(std::make_shared<test_feature0>()); if (feature1_enabled) - _test_feature1.reset(new test_feature1); + register_feature(std::make_shared<test_feature1>()); } - - std::vector<std::string> enumerate_features() override - { - std::vector<std::string> features; - if (_test_feature0) - features.push_back(_test_feature0->get_feature_name()); - if (_test_feature1) - features.push_back(_test_feature1->get_feature_name()); - return features; - } - -private: - discoverable_feature::sptr get_feature_ptr( - discoverable_feature::feature_id_t feature_id) override - { - switch (feature_id) { - case discoverable_feature::RESERVED0: - return _test_feature0; - case discoverable_feature::RESERVED1: - return _test_feature1; - default: - return discoverable_feature::sptr(); - }; - } - - discoverable_feature::sptr _test_feature0; - discoverable_feature::sptr _test_feature1; }; BOOST_AUTO_TEST_CASE(test_has_feature_works) @@ -89,10 +63,19 @@ BOOST_AUTO_TEST_CASE(test_enumerate_feature_works) test_feature_getter feature_getter(true, true); const auto features = feature_getter.enumerate_features(); - // Note that ordering isn't strictly a requirement of the interface, - // we just leverage that here to demonstrate API usage concisely. - BOOST_CHECK_EQUAL(features[0], "test_feature0"); - BOOST_CHECK_EQUAL(features[1], "test_feature1"); + bool has_feature0 = false; + bool has_feature1 = false; + for (auto& feature : features) { + if (feature == "test_feature0") { + has_feature0 = true; + } + if (feature == "test_feature1") { + has_feature1 = true; + } + } + BOOST_CHECK_EQUAL(has_feature0, true); + BOOST_CHECK_EQUAL(has_feature1, true); + BOOST_CHECK_EQUAL(features.size(), 2); } BOOST_AUTO_TEST_CASE(test_get_feature_works) |