aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libnvxx/tests/nvxx_basic.cc131
1 files changed, 131 insertions, 0 deletions
diff --git a/libnvxx/tests/nvxx_basic.cc b/libnvxx/tests/nvxx_basic.cc
index bb4debb..e808ef4 100644
--- a/libnvxx/tests/nvxx_basic.cc
+++ b/libnvxx/tests/nvxx_basic.cc
@@ -379,6 +379,28 @@ TEST_CASE(nvxx_add_bool_contig_range)
ATF_REQUIRE_EQ(false, data2[1]);
}
+TEST_CASE(nvxx_free_bool_array)
+{
+ using namespace std::literals;
+ auto constexpr key = "test_bool"sv;
+ auto constexpr value = std::array<bool, 16>{};
+
+ auto nvl = bsd::nv_list();
+ nvl.add_bool_array(key, value);
+ ATF_REQUIRE_EQ(true, nvl.exists(key));
+ nvl.free_bool_array(key);
+ ATF_REQUIRE_EQ(false, nvl.exists(key));
+}
+
+TEST_CASE(nvxx_free_bool_array_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_array(key));
+}
+
/*
* number tests
*/
@@ -533,6 +555,28 @@ TEST_CASE(nvxx_add_duplicate_number_array)
nvl.add_number_range(key, value));
}
+TEST_CASE(nvxx_free_number_array)
+{
+ using namespace std::literals;
+ auto constexpr key = "test_number"sv;
+ auto constexpr value = std::array<std::uint64_t, 16>{};
+
+ auto nvl = bsd::nv_list();
+ nvl.add_number_array(key, value);
+ ATF_REQUIRE_EQ(true, nvl.exists(key));
+ nvl.free_number_array(key);
+ ATF_REQUIRE_EQ(false, nvl.exists(key));
+}
+
+TEST_CASE(nvxx_free_number_array_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_array(key));
+}
+
TEST_CASE(nvxx_add_number_range)
{
using namespace std::literals;
@@ -692,6 +736,28 @@ TEST_CASE(nvxx_add_string_array_error)
nvl.add_string_range(key, values));
}
+TEST_CASE(nvxx_free_string_array)
+{
+ using namespace std::literals;
+ auto constexpr key = "test_string"sv;
+ auto value = std::vector{"one"sv, "two"sv};
+
+ auto nvl = bsd::nv_list();
+ nvl.add_string_array(key, value);
+ ATF_REQUIRE_EQ(true, nvl.exists(key));
+ nvl.free_string_array(key);
+ ATF_REQUIRE_EQ(false, nvl.exists(key));
+}
+
+TEST_CASE(nvxx_free_string_array_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_string_array(key));
+}
+
TEST_CASE(nvxx_get_nonexistent_string_array)
{
auto nvl = bsd::nv_list();
@@ -913,6 +979,28 @@ TEST_CASE(nvxx_add_duplicate_nvlist_array)
nvl.add_nvlist_range(key, value));
}
+TEST_CASE(nvxx_free_nvlist_array)
+{
+ using namespace std::literals;
+ auto constexpr key = "test nvlist"sv;
+ auto value = std::vector{bsd::nv_list{}, bsd::nv_list{}};
+
+ auto nvl = bsd::nv_list();
+ nvl.add_nvlist_array(key, value);
+ ATF_REQUIRE_EQ(true, nvl.exists(key));
+ nvl.free_nvlist_array(key);
+ ATF_REQUIRE_EQ(false, nvl.exists(key));
+}
+
+TEST_CASE(nvxx_free_nvlist_array_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_array(key));
+}
+
/*
* descriptor
*/
@@ -991,6 +1079,38 @@ TEST_CASE(nvxx_add_duplicate_descriptor)
nvl.add_descriptor(key, fds[0]));
}
+TEST_CASE(nvxx_free_descriptor_array)
+{
+ using namespace std::literals;
+ auto constexpr key = "test_descriptor"sv;
+
+ auto fds = std::array<int, 2>{};
+ auto ret = ::pipe(&fds[0]);
+ ATF_REQUIRE_EQ(0, ret);
+
+ auto guard = std::unique_ptr<int[],
+ decltype([](auto fds) {
+ ::close(fds[0]);
+ ::close(fds[1]);
+ })>(&fds[0]);
+
+ auto nvl = bsd::nv_list{};
+ nvl.add_descriptor_array(key, fds);
+ ATF_REQUIRE_EQ(true, nvl.exists(key));
+ nvl.free_descriptor_array(key);
+ ATF_REQUIRE_EQ(false, nvl.exists(key));
+}
+
+TEST_CASE(nvxx_free_descriptor_array_nonexistent)
+{
+ using namespace std::literals;
+ auto constexpr key = "test descriptor"sv;
+
+ auto nvl = bsd::nv_list();
+ ATF_REQUIRE_THROW(bsd::nv_key_not_found,
+ nvl.free_descriptor_array(key));
+}
+
/*
* binary
*/
@@ -1140,6 +1260,8 @@ ATF_INIT_TEST_CASES(tcs)
ATF_ADD_TEST_CASE(tcs, nvxx_get_nonexistent_bool_array);
ATF_ADD_TEST_CASE(tcs, nvxx_add_bool_range);
ATF_ADD_TEST_CASE(tcs, nvxx_add_bool_contig_range);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_bool_array);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_bool_array_nonexistent);
ATF_ADD_TEST_CASE(tcs, nvxx_add_number);
ATF_ADD_TEST_CASE(tcs, nvxx_add_number_error);
@@ -1155,6 +1277,8 @@ ATF_INIT_TEST_CASES(tcs)
ATF_ADD_TEST_CASE(tcs, nvxx_get_nonexistent_number_array);
ATF_ADD_TEST_CASE(tcs, nvxx_add_number_range);
ATF_ADD_TEST_CASE(tcs, nvxx_add_number_contig_range);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_number_array);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_number_array_nonexistent);
ATF_ADD_TEST_CASE(tcs, nvxx_add_string);
ATF_ADD_TEST_CASE(tcs, nvxx_add_string_error);
@@ -1170,6 +1294,8 @@ ATF_INIT_TEST_CASES(tcs)
ATF_ADD_TEST_CASE(tcs, nvxx_get_nonexistent_string_array);
ATF_ADD_TEST_CASE(tcs, nvxx_add_string_range);
ATF_ADD_TEST_CASE(tcs, nvxx_add_string_contig_range);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_string_array);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_string_array_nonexistent);
ATF_ADD_TEST_CASE(tcs, nvxx_add_nvlist);
ATF_ADD_TEST_CASE(tcs, nvxx_add_nvlist_error);
@@ -1183,12 +1309,17 @@ ATF_INIT_TEST_CASES(tcs)
ATF_ADD_TEST_CASE(tcs, nvxx_add_nvlist_array_error);
ATF_ADD_TEST_CASE(tcs, nvxx_add_duplicate_nvlist_array);
ATF_ADD_TEST_CASE(tcs, nvxx_get_nonexistent_nvlist_array);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_nvlist_array);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_nvlist_array_nonexistent);
ATF_ADD_TEST_CASE(tcs, nvxx_add_descriptor);
ATF_ADD_TEST_CASE(tcs, nvxx_add_descriptor_error);
ATF_ADD_TEST_CASE(tcs, nvxx_add_duplicate_descriptor);
ATF_ADD_TEST_CASE(tcs, nvxx_get_nonexistent_descriptor);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_descriptor_array);
+ ATF_ADD_TEST_CASE(tcs, nvxx_free_descriptor_array_nonexistent);
+
ATF_ADD_TEST_CASE(tcs, nvxx_add_binary);
ATF_ADD_TEST_CASE(tcs, nvxx_add_binary_error);
ATF_ADD_TEST_CASE(tcs, nvxx_add_duplicate_binary);