aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLexi Winter <lexi@hemlock.eden.le-fay.org>2025-03-27 11:42:57 +0000
committerLexi Winter <lexi@hemlock.eden.le-fay.org>2025-03-27 11:42:57 +0000
commit4f233c0be6606f38bf8dd42f243284e0584c7214 (patch)
tree0a47ce906637aec67585a81e316025039cd377a0
parentbd66c8a11d2a7bc1acd2e2cd226be9fe8d494dd1 (diff)
downloadlibnvxx-4f233c0be6606f38bf8dd42f243284e0584c7214.tar.gz
libnvxx-4f233c0be6606f38bf8dd42f243284e0584c7214.tar.bz2
add test cases for free_*() of nonexistent values
-rw-r--r--libnvxx/nv_list.cc2
-rw-r--r--libnvxx/tests/nvxx_basic.cc75
2 files changed, 76 insertions, 1 deletions
diff --git a/libnvxx/nv_list.cc b/libnvxx/nv_list.cc
index 66742ce..742ac0e 100644
--- a/libnvxx/nv_list.cc
+++ b/libnvxx/nv_list.cc
@@ -200,7 +200,7 @@ __nv_list::add_null(std::string_view key)
void
__nv_list::free_null(std::string_view key)
{
- ::nvlist_free_null(__m_nv, std::string(key).c_str());
+ free_type(key, NV_TYPE_NULL);
}
/*
diff --git a/libnvxx/tests/nvxx_basic.cc b/libnvxx/tests/nvxx_basic.cc
index b701f71..bab9736 100644
--- a/libnvxx/tests/nvxx_basic.cc
+++ b/libnvxx/tests/nvxx_basic.cc
@@ -183,6 +183,15 @@ TEST_CASE(nvxx_free_null)
ATF_REQUIRE_EQ(false, nvl.exists_null(key));
}
+TEST_CASE(nvxx_free_null_nonexistent)
+{
+ using namespace std::literals;
+ auto constexpr key = "test null"sv;
+
+ auto nvl = bsd::nv_list();
+ ATF_REQUIRE_THROW(bsd::nv_key_not_found, nvl.free_null(key));
+}
+
/*
* bool tests
*/
@@ -263,6 +272,15 @@ TEST_CASE(nvxx_free_bool)
ATF_REQUIRE_EQ(false, nvl.exists(key));
}
+TEST_CASE(nvxx_free_bool_nonexistent)
+{
+ using namespace std::literals;
+ auto constexpr key = "test bool"sv;
+
+ auto nvl = bsd::nv_list();
+ ATF_REQUIRE_THROW(bsd::nv_key_not_found, nvl.free_bool(key));
+}
+
TEST_CASE(nvxx_add_bool_array)
{
using namespace std::literals;
@@ -448,6 +466,15 @@ TEST_CASE(nvxx_free_number)
ATF_REQUIRE_EQ(false, nvl.exists(key));
}
+TEST_CASE(nvxx_free_number_nonexistent)
+{
+ using namespace std::literals;
+ auto constexpr key = "test number"sv;
+
+ auto nvl = bsd::nv_list();
+ ATF_REQUIRE_THROW(bsd::nv_key_not_found, nvl.free_number(key));
+}
+
TEST_CASE(nvxx_add_number_array)
{
using namespace std::literals;
@@ -612,6 +639,15 @@ TEST_CASE(nvxx_free_string)
ATF_REQUIRE_EQ(false, nvl.exists(key));
}
+TEST_CASE(nvxx_free_string_nonexistent)
+{
+ using namespace std::literals;
+ auto constexpr key = "test string"sv;
+
+ auto nvl = bsd::nv_list();
+ ATF_REQUIRE_THROW(bsd::nv_key_not_found, nvl.free_string(key));
+}
+
TEST_CASE(nvxx_add_string_array)
{
using namespace std::literals;
@@ -799,6 +835,15 @@ TEST_CASE(nvxx_free_nvlist)
ATF_REQUIRE_EQ(false, nvl.exists("test_nvlist"));
}
+TEST_CASE(nvxx_free_nvlist_nonexistent)
+{
+ using namespace std::literals;
+ auto constexpr key = "test nvlist"sv;
+
+ auto nvl = bsd::nv_list();
+ ATF_REQUIRE_THROW(bsd::nv_key_not_found, nvl.free_nvlist(key));
+}
+
TEST_CASE(nvxx_add_nvlist_array)
{
using namespace std::literals;
@@ -977,6 +1022,29 @@ TEST_CASE(nvxx_add_binary_error)
ATF_REQUIRE_THROW(bsd::nv_error_state, nvl.add_binary(key, value));
}
+TEST_CASE(nvxx_free_binary)
+{
+ using namespace std::literals;
+ auto constexpr key = "test binary"sv;
+ auto data = std::array<std::byte, 16>{};
+
+ auto nvl = bsd::nv_list();
+ nvl.add_binary(key, data);
+ ATF_REQUIRE_EQ(true, nvl.exists_binary(key));
+
+ nvl.free_binary(key);
+ ATF_REQUIRE_EQ(false, nvl.exists_binary(key));
+}
+
+TEST_CASE(nvxx_free_binary_nonexistent)
+{
+ using namespace std::literals;
+ auto constexpr key = "test binary"sv;
+
+ auto nvl = bsd::nv_list();
+ ATF_REQUIRE_THROW(bsd::nv_key_not_found, nvl.free_binary(key));
+}
+
TEST_CASE(nvxx_add_duplicate_binary)
{
using namespace std::literals;
@@ -1056,6 +1124,7 @@ ATF_INIT_TEST_CASES(tcs)
ATF_ADD_TEST_CASE(tcs, nvxx_add_null_error);
ATF_ADD_TEST_CASE(tcs, nvxx_add_duplicate_null);
ATF_ADD_TEST_CASE(tcs, nvxx_free_null);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_null_nonexistent);
ATF_ADD_TEST_CASE(tcs, nvxx_add_bool);
ATF_ADD_TEST_CASE(tcs, nvxx_add_bool_error);
@@ -1063,6 +1132,7 @@ ATF_INIT_TEST_CASES(tcs)
ATF_ADD_TEST_CASE(tcs, nvxx_get_nonexistent_bool);
ATF_ADD_TEST_CASE(tcs, nvxx_take_bool);
ATF_ADD_TEST_CASE(tcs, nvxx_free_bool);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_bool_nonexistent);
ATF_ADD_TEST_CASE(tcs, nvxx_add_bool_array);
ATF_ADD_TEST_CASE(tcs, nvxx_add_bool_array_error);
@@ -1077,6 +1147,7 @@ ATF_INIT_TEST_CASES(tcs)
ATF_ADD_TEST_CASE(tcs, nvxx_get_nonexistent_number);
ATF_ADD_TEST_CASE(tcs, nvxx_take_number);
ATF_ADD_TEST_CASE(tcs, nvxx_free_number);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_number_nonexistent);
ATF_ADD_TEST_CASE(tcs, nvxx_add_number_array);
ATF_ADD_TEST_CASE(tcs, nvxx_add_number_array_error);
@@ -1091,6 +1162,7 @@ ATF_INIT_TEST_CASES(tcs)
ATF_ADD_TEST_CASE(tcs, nvxx_get_nonexistent_string);
ATF_ADD_TEST_CASE(tcs, nvxx_take_string);
ATF_ADD_TEST_CASE(tcs, nvxx_free_string);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_string_nonexistent);
ATF_ADD_TEST_CASE(tcs, nvxx_add_string_array);
ATF_ADD_TEST_CASE(tcs, nvxx_add_string_array_error);
@@ -1105,6 +1177,7 @@ ATF_INIT_TEST_CASES(tcs)
ATF_ADD_TEST_CASE(tcs, nvxx_get_nonexistent_nvlist);
ATF_ADD_TEST_CASE(tcs, nvxx_take_nvlist);
ATF_ADD_TEST_CASE(tcs, nvxx_free_nvlist);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_nvlist_nonexistent);
ATF_ADD_TEST_CASE(tcs, nvxx_add_nvlist_array);
ATF_ADD_TEST_CASE(tcs, nvxx_add_nvlist_array_error);
@@ -1121,6 +1194,8 @@ ATF_INIT_TEST_CASES(tcs)
ATF_ADD_TEST_CASE(tcs, nvxx_add_duplicate_binary);
ATF_ADD_TEST_CASE(tcs, nvxx_get_nonexistent_binary);
ATF_ADD_TEST_CASE(tcs, nvxx_take_binary);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_binary);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_binary_nonexistent);
ATF_ADD_TEST_CASE(tcs, nvxx_add_binary_range);
}