summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-01-04 13:56:06 +0100
committerThomas Haller <thaller@redhat.com>2020-01-08 11:23:24 +0100
commit023dc9646c468d276aac78bf4249a9dd80da6772 (patch)
tree2208b327ebc5cdae0ef5034566733a17ab627a64
parent7d8da6c9c1506f554a84a0edb5f26a7c7e833285 (diff)
downloadNetworkManager-023dc9646c468d276aac78bf4249a9dd80da6772.tar.gz
wifi/tests: add test for ssids_options_to_ptrarray()
-rw-r--r--src/devices/wifi/nm-device-wifi.c8
-rw-r--r--src/devices/wifi/nm-device-wifi.h2
-rw-r--r--src/devices/wifi/tests/test-devices-wifi.c57
3 files changed, 67 insertions, 0 deletions
diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c
index 260a4ca06b..f4413029ec 100644
--- a/src/devices/wifi/nm-device-wifi.c
+++ b/src/devices/wifi/nm-device-wifi.c
@@ -1079,6 +1079,8 @@ ssids_options_to_ptrarray (GVariant *value, GError **error)
gsize len;
int num_ssids, i;
+ nm_assert (g_variant_is_of_type (value, G_VARIANT_TYPE ("aay")));
+
num_ssids = g_variant_n_children (value);
if (num_ssids > 32) {
g_set_error_literal (error,
@@ -1110,6 +1112,12 @@ ssids_options_to_ptrarray (GVariant *value, GError **error)
return ssids;
}
+GPtrArray *
+nmtst_ssids_options_to_ptrarray (GVariant *value, GError **error)
+{
+ return ssids_options_to_ptrarray (value, error);
+}
+
static void
dbus_request_scan_cb (NMDevice *device,
GDBusMethodInvocation *context,
diff --git a/src/devices/wifi/nm-device-wifi.h b/src/devices/wifi/nm-device-wifi.h
index aaf47143b8..d861d24712 100644
--- a/src/devices/wifi/nm-device-wifi.h
+++ b/src/devices/wifi/nm-device-wifi.h
@@ -40,4 +40,6 @@ void _nm_device_wifi_request_scan (NMDeviceWifi *self,
GVariant *options,
GDBusMethodInvocation *invocation);
+GPtrArray *nmtst_ssids_options_to_ptrarray (GVariant *value, GError **error);
+
#endif /* __NETWORKMANAGER_DEVICE_WIFI_H__ */
diff --git a/src/devices/wifi/tests/test-devices-wifi.c b/src/devices/wifi/tests/test-devices-wifi.c
index a960e7a205..bde3630706 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 ();
}