diff options
| author | Lexi Winter <lexi@hemlock.eden.le-fay.org> | 2025-03-29 06:42:52 +0000 |
|---|---|---|
| committer | Lexi Winter <lexi@hemlock.eden.le-fay.org> | 2025-03-29 06:42:52 +0000 |
| commit | 661b39b557abc9891335d4106162c359f520434a (patch) | |
| tree | 07b2908efdfa54716b6bb5b6733861a79238f486 | |
| parent | 962c3df869308725cefb7499135085b487d03ed0 (diff) | |
| download | libnvxx-661b39b557abc9891335d4106162c359f520434a.tar.gz libnvxx-661b39b557abc9891335d4106162c359f520434a.tar.bz2 | |
add a test for the range version of unpack()
| -rw-r--r-- | libnvxx/nvxx_base.h | 2 | ||||
| -rw-r--r-- | libnvxx/tests/nvxx_basic.cc | 22 |
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); |
