diff options
| author | Michael Biebl <biebl@debian.org> | 2021-10-01 23:05:04 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2021-10-01 23:05:04 +0200 |
| commit | e74c568b07b50b97873fb4ee1d776dedefbd54d6 (patch) | |
| tree | 3469f17ea9af91f7ff169b890633bda68b0cf76e /src/libnm-core-impl/tests/test-settings-defaults.c | |
| parent | bfe522304da217296e2a61040f58e35ec5d6f3f2 (diff) | |
New upstream version 1.32.12 upstream/1.32.12
Diffstat (limited to 'src/libnm-core-impl/tests/test-settings-defaults.c')
| -rw-r--r-- | src/libnm-core-impl/tests/test-settings-defaults.c | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/src/libnm-core-impl/tests/test-settings-defaults.c b/src/libnm-core-impl/tests/test-settings-defaults.c new file mode 100644 index 00000000..b9db7107 --- /dev/null +++ b/src/libnm-core-impl/tests/test-settings-defaults.c @@ -0,0 +1,109 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2008 - 2011 Red Hat, Inc. + */ + +#include "libnm-core-impl/nm-default-libnm-core.h" + +#include "nm-utils.h" +#include "nm-setting-8021x.h" +#include "nm-setting-cdma.h" +#include "nm-setting-connection.h" +#include "nm-setting-gsm.h" +#include "nm-setting-ip4-config.h" +#include "nm-setting-ip6-config.h" +#include "nm-setting-ppp.h" +#include "nm-setting-pppoe.h" +#include "nm-setting-serial.h" +#include "nm-setting-vpn.h" +#include "nm-setting-wired.h" +#include "nm-setting-wireless.h" +#include "nm-setting-wireless-security.h" + +#include "libnm-glib-aux/nm-test-utils.h" + +static void +test_defaults(GType type, const char *name) +{ + GParamSpec **property_specs; + guint n_property_specs; + GObject * setting; + int i; + + setting = g_object_new(type, NULL); + + property_specs = g_object_class_list_properties(G_OBJECT_GET_CLASS(setting), &n_property_specs); + g_assert(property_specs); + + for (i = 0; i < n_property_specs; i++) { + GParamSpec *prop_spec = property_specs[i]; + GValue value = G_VALUE_INIT; + GValue defvalue = G_VALUE_INIT; + char * actual, *expected; + gboolean ok = FALSE; + + /* Ignore non-fundamental types since they won't really have + * defaults. + */ + if (!G_TYPE_IS_FUNDAMENTAL(prop_spec->value_type)) + continue; + + g_value_init(&value, prop_spec->value_type); + g_object_get_property(G_OBJECT(setting), prop_spec->name, &value); + + g_value_init(&defvalue, prop_spec->value_type); + g_param_value_set_default(prop_spec, &defvalue); + + actual = g_strdup_value_contents(&value); + expected = g_strdup_value_contents(&defvalue); + + if (!strcmp(prop_spec->name, NM_SETTING_NAME)) { + /* 'name' is always the setting name, not the default value */ + ok = !strcmp(nm_setting_get_name(NM_SETTING(setting)), name); + g_free(expected); + expected = g_strdup(name); + } else + ok = g_param_value_defaults(prop_spec, &value); + + g_assert(ok); + + g_free(actual); + g_free(expected); + g_value_unset(&value); + g_value_unset(&defvalue); + } + + g_free(property_specs); + g_object_unref(setting); +} + +static void +defaults(void) +{ + /* The tests */ + test_defaults(NM_TYPE_SETTING_CONNECTION, NM_SETTING_CONNECTION_SETTING_NAME); + test_defaults(NM_TYPE_SETTING_802_1X, NM_SETTING_802_1X_SETTING_NAME); + test_defaults(NM_TYPE_SETTING_CDMA, NM_SETTING_CDMA_SETTING_NAME); + test_defaults(NM_TYPE_SETTING_GSM, NM_SETTING_GSM_SETTING_NAME); + test_defaults(NM_TYPE_SETTING_IP4_CONFIG, NM_SETTING_IP4_CONFIG_SETTING_NAME); + test_defaults(NM_TYPE_SETTING_IP6_CONFIG, NM_SETTING_IP6_CONFIG_SETTING_NAME); + test_defaults(NM_TYPE_SETTING_PPP, NM_SETTING_PPP_SETTING_NAME); + test_defaults(NM_TYPE_SETTING_PPPOE, NM_SETTING_PPPOE_SETTING_NAME); + test_defaults(NM_TYPE_SETTING_SERIAL, NM_SETTING_SERIAL_SETTING_NAME); + test_defaults(NM_TYPE_SETTING_VPN, NM_SETTING_VPN_SETTING_NAME); + test_defaults(NM_TYPE_SETTING_WIRED, NM_SETTING_WIRED_SETTING_NAME); + test_defaults(NM_TYPE_SETTING_WIRELESS, NM_SETTING_WIRELESS_SETTING_NAME); + test_defaults(NM_TYPE_SETTING_WIRELESS_SECURITY, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME); +} + +NMTST_DEFINE(); + +int +main(int argc, char **argv) +{ + nmtst_init(&argc, &argv, TRUE); + + g_test_add_func("/libnm/defaults", defaults); + + return g_test_run(); +} |