aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLexi Winter <lexi@hemlock.eden.le-fay.org>2025-03-29 06:42:52 +0000
committerLexi Winter <lexi@hemlock.eden.le-fay.org>2025-03-29 06:42:52 +0000
commit661b39b557abc9891335d4106162c359f520434a (patch)
tree07b2908efdfa54716b6bb5b6733861a79238f486
parent962c3df869308725cefb7499135085b487d03ed0 (diff)
downloadlibnvxx-661b39b557abc9891335d4106162c359f520434a.tar.gz
libnvxx-661b39b557abc9891335d4106162c359f520434a.tar.bz2
add a test for the range version of unpack()
-rw-r--r--libnvxx/nvxx_base.h2
-rw-r--r--libnvxx/tests/nvxx_basic.cc22
2 files changed, 23 insertions, 1 deletions
diff --git a/libnvxx/nvxx_base.h b/libnvxx/nvxx_base.h
index 68d749e..9eebb4e 100644
--- a/libnvxx/nvxx_base.h
+++ b/libnvxx/nvxx_base.h
@@ -425,7 +425,7 @@ struct nv_list final
[[nodiscard]] static nv_list unpack(std::ranges::contiguous_range auto &&__data,
int __flags = 0)
{
- return (unpack(std::span<std::byte>(__data), __flags));
+ return (unpack(std::span<std::byte const>(__data), __flags));
}
/*
diff --git a/libnvxx/tests/nvxx_basic.cc b/libnvxx/tests/nvxx_basic.cc
index a7b5086..09b8976 100644
--- a/libnvxx/tests/nvxx_basic.cc
+++ b/libnvxx/tests/nvxx_basic.cc
@@ -372,6 +372,27 @@ TEST_CASE(nvxx_unpack)
ATF_REQUIRE_EQ(value, nvl.get_number(key));
}
+TEST_CASE(nvxx_unpack_range)
+{
+ using namespace std::literals;
+ auto key = "test number"sv;
+ auto value = 42u;
+
+ auto *nv = ::nvlist_create(0);
+ ATF_REQUIRE_EQ(true, nv != nullptr);
+ ::nvlist_add_number(nv, std::string(key).c_str(), value);
+
+ auto size = std::size_t{};
+ auto *data = ::nvlist_pack(nv, &size);
+ ATF_REQUIRE_EQ(true, data != nullptr);
+
+ auto bytes = std::span{static_cast<std::byte const *>(data), size}
+ | std::ranges::to<std::vector>();
+ auto nvl = bsd::nv_list::unpack(bytes);
+
+ ATF_REQUIRE_EQ(value, nvl.get_number(key));
+}
+
/*
* exists(_type)
*/
@@ -1910,6 +1931,7 @@ ATF_INIT_TEST_CASES(tcs)
ATF_ADD_TEST_CASE(tcs, nvxx_pack_error);
ATF_ADD_TEST_CASE(tcs, nvxx_pack_empty);
ATF_ADD_TEST_CASE(tcs, nvxx_unpack);
+ ATF_ADD_TEST_CASE(tcs, nvxx_unpack_range);
ATF_ADD_TEST_CASE(tcs, nvxx_exists);
ATF_ADD_TEST_CASE(tcs, nvxx_exists_nul_key);