aboutsummaryrefslogtreecommitdiffstats
path: root/host/tests
diff options
context:
space:
mode:
authorLane Kolbly <lane.kolbly@ni.com>2020-06-22 18:06:38 -0500
committerAaron Rossetto <aaron.rossetto@ni.com>2020-06-25 13:36:08 -0500
commitd6cb55ef08f51c9ebef57e5bbcb95b03a65972a9 (patch)
tree8b8f1350d9d45d513f00e2b8e836a52600d27e66 /host/tests
parente9ae5fb949903cce1720b75b894401930cce1ebe (diff)
downloaduhd-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.txt7
-rw-r--r--host/tests/discoverable_feature_test.cpp51
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)