about summary refs log tree commit diff
path: root/src/devices/wifi/tests
diff options
context:
space:
mode:
authorSebastien Bacher <seb128@ubuntu.com>2020-05-19 16:38:36 +0200
committerSebastien Bacher <seb128@ubuntu.com>2020-05-19 17:09:07 +0200
commitccf6dc06bbee82c3d49f451545c5317337e0777e (patch)
treea8fddc8c6e2b3b99bebab1d5bb2a64581eff4bfd /src/devices/wifi/tests
parentf109e55ef130ce84054d5ba3acf4b71cd8c7564a (diff)
parent7ffed1e6136de75188f10ba8763bcb942f932f8e (diff)
Merge remote-tracking branch 'salsa/debian/master' into ubuntu/master
Diffstat (limited to 'src/devices/wifi/tests')
-rw-r--r--src/devices/wifi/tests/test-devices-wifi.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/devices/wifi/tests/test-devices-wifi.c b/src/devices/wifi/tests/test-devices-wifi.c
index a960e7a2..bde36307 100644
--- a/src/devices/wifi/tests/test-devices-wifi.c
+++ b/src/devices/wifi/tests/test-devices-wifi.c
@@ -6,6 +6,7 @@
 #include "nm-default.h"
 
 #include "devices/wifi/nm-wifi-utils.h"
+#include "devices/wifi/nm-device-wifi.h"
 #include "nm-core-internal.h"
 
 #include "nm-test-utils-core.h"
@@ -1337,6 +1338,60 @@ test_strength_all (void)
 
 /*****************************************************************************/
 
+static void
+do_test_ssids_options_to_ptrarray (const char *const*ssids)
+{
+	GVariantBuilder builder;
+	gs_unref_variant GVariant *variant = NULL;
+	gs_unref_ptrarray GPtrArray *ssids_arr = NULL;
+	gs_free_error GError *error = NULL;
+	gsize len;
+	gsize i;
+
+	g_assert (ssids);
+
+	len = NM_PTRARRAY_LEN (ssids);
+
+	g_variant_builder_init (&builder, G_VARIANT_TYPE ("aay"));
+	for (i = 0; i < len; i++) {
+		const char *ssid = ssids[i];
+
+		g_variant_builder_add (&builder,
+		                       "@ay",
+		                       g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE, ssid, strlen (ssid), 1));
+	}
+	variant = g_variant_builder_end (&builder);
+
+	if (nmtst_get_rand_bool ())
+		g_variant_ref_sink (variant);
+
+	ssids_arr = nmtst_ssids_options_to_ptrarray (variant, &error);
+	g_assert (!error);
+	if (len == 0) {
+		g_assert (!ssids_arr);
+		return;
+	}
+	g_assert_cmpint (len, ==, ssids_arr->len);
+	for (i = 0; i < len; i++) {
+		const char *ssid = ssids[i];
+		GBytes *bytes = ssids_arr->pdata[i];
+
+		g_assert (nm_utils_gbytes_equal_mem (bytes,
+		                                     ssid,
+		                                     strlen (ssid)));
+	}
+}
+
+static void
+test_ssids_options_to_ptrarray (void)
+{
+	do_test_ssids_options_to_ptrarray (NM_PTRARRAY_EMPTY (const char *));
+	do_test_ssids_options_to_ptrarray (NM_MAKE_STRV ("ab"));
+	do_test_ssids_options_to_ptrarray (NM_MAKE_STRV ("ab", "cd", "fsdfdsf"));
+}
+
+/*****************************************************************************/
+
 NMTST_DEFINE ();
 
 int
@@ -1501,5 +1556,7 @@ main (int argc, char **argv)
 	g_test_add_func ("/wifi/strength/all",
 	                 test_strength_all);
 
+	g_test_add_func ("/wifi/ssids_options_to_ptrarray", test_ssids_options_to_ptrarray);
+
 	return g_test_run ();
 }