From abf025f0a5c537f0b2ab07da933ffb82f62418ef Mon Sep 17 00:00:00 2001 From: Lane Kolbly Date: Mon, 6 Apr 2020 11:17:29 -0500 Subject: uhd: Add fuzzy serial number checking We have integer 32-bit serial numbers for MPM devices, for example "1234abcd". For serial numbers which have less than eight digits, e.g. "123abcd", a user may feel inclined to prefix this number with a 0 when they are searching for devices, e.g. "0123abcd". This change makes it so that specifying "0123abcd" will match a device with serial number "123ABCD". --- host/tests/CMakeLists.txt | 6 ++++++ host/tests/serial_number_test.cpp | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 host/tests/serial_number_test.cpp (limited to 'host/tests') diff --git a/host/tests/CMakeLists.txt b/host/tests/CMakeLists.txt index f9f94e023..828729b79 100644 --- a/host/tests/CMakeLists.txt +++ b/host/tests/CMakeLists.txt @@ -269,6 +269,12 @@ UHD_ADD_NONAPI_TEST( ${CMAKE_SOURCE_DIR}/lib/transport/offload_io_service.cpp ) +UHD_ADD_NONAPI_TEST( + TARGET "serial_number_test.cpp" + EXTRA_SOURCES + ${CMAKE_SOURCE_DIR}/lib/utils/serial_number.cpp +) + ######################################################################## # demo of a loadable module ######################################################################## diff --git a/host/tests/serial_number_test.cpp b/host/tests/serial_number_test.cpp new file mode 100644 index 000000000..11c7f5372 --- /dev/null +++ b/host/tests/serial_number_test.cpp @@ -0,0 +1,22 @@ +// +// Copyright 2020 Ettus Research, a National Instruments Company +// +// SPDX-License-Identifier: GPL-3.0-or-later +// + +#include +#include + +BOOST_AUTO_TEST_CASE(test_serial_numbers_match) +{ + BOOST_CHECK_EQUAL(true, uhd::serial_numbers_match("abcd123", "abcd123")); + BOOST_CHECK_EQUAL(true, uhd::serial_numbers_match("0abcd123", "0abcd123")); + BOOST_CHECK_EQUAL(false, uhd::serial_numbers_match("0abcd123", "abcd1230")); + BOOST_CHECK_EQUAL(false, uhd::serial_numbers_match("abcd123", "abcd124")); + BOOST_CHECK_EQUAL(false, uhd::serial_numbers_match("abcd123", "321dcba")); + BOOST_CHECK_EQUAL(true, uhd::serial_numbers_match("abcd123", "0abcd123")); + BOOST_CHECK_EQUAL(true, uhd::serial_numbers_match("0abcd123", "abcd123")); + + // Out of range + BOOST_CHECK_EQUAL(false, uhd::serial_numbers_match("aaaaaaaaaaaaaa", "abcd123")); +} -- cgit v1.2.3