From 042cd99049087d1f2a6a9e8883fb687da70d51ab Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 11 Jun 2021 15:28:09 +0200 Subject: [PATCH] libnm/tests: test consistency for nm_meta_setting_types_by_priority --- src/libnm-core-impl/tests/test-setting.c | 58 ++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/src/libnm-core-impl/tests/test-setting.c b/src/libnm-core-impl/tests/test-setting.c index 8709283d78..50821bb16c 100644 --- a/src/libnm-core-impl/tests/test-setting.c +++ b/src/libnm-core-impl/tests/test-setting.c @@ -109,6 +109,61 @@ _connection_new_from_dbus_strict(GVariant *dict, gboolean normalize) /*****************************************************************************/ +static void +test_nm_meta_setting_types_by_priority(void) +{ + gs_unref_ptrarray GPtrArray *arr = NULL; + int i; + int j; + + G_STATIC_ASSERT_EXPR(_NM_META_SETTING_TYPE_NUM + == G_N_ELEMENTS(nm_meta_setting_types_by_priority)); + + G_STATIC_ASSERT_EXPR(_NM_META_SETTING_TYPE_NUM == 51); + + arr = g_ptr_array_new_with_free_func(g_object_unref); + + for (i = 0; i < _NM_META_SETTING_TYPE_NUM; i++) { + const NMMetaSettingType meta_type = nm_meta_setting_types_by_priority[i]; + const NMMetaSettingInfo *setting_info; + NMSetting * setting; + + g_assert(_NM_INT_NOT_NEGATIVE(meta_type)); + g_assert(meta_type < _NM_META_SETTING_TYPE_NUM); + + setting_info = &nm_meta_setting_infos[meta_type]; + g_assert(setting_info); + _nm_assert_setting_info(setting_info, 0); + + for (j = 0; j < i; j++) + g_assert_cmpint(nm_meta_setting_types_by_priority[j], !=, meta_type); + + setting = g_object_new(setting_info->get_setting_gtype(), NULL); + g_assert(NM_IS_SETTING(setting)); + + g_ptr_array_add(arr, setting); + } + + for (i = 1; i < _NM_META_SETTING_TYPE_NUM; i++) { + NMSetting *setting = arr->pdata[i]; + + for (j = 0; j < i; j++) { + NMSetting *other = arr->pdata[j]; + + if (_nmtst_nm_setting_sort(other, setting) >= 0) { + g_error("sort order for nm_meta_setting_types_by_priority[%d vs %d] is wrong: %s " + "should be before %s", + j, + i, + nm_setting_get_name(setting), + nm_setting_get_name(other)); + } + } + } +} + +/*****************************************************************************/ + static char * _create_random_ipaddr(int addr_family, gboolean as_service) { @@ -4593,6 +4648,9 @@ main(int argc, char **argv) g_test_add_func("/libnm/test_connection_uuid", test_connection_uuid); + g_test_add_func("/libnm/settings/test_nm_meta_setting_types_by_priority", + test_nm_meta_setting_types_by_priority); + g_test_add_data_func("/libnm/setting-8021x/key-and-cert", "test_key_and_cert.pem, test", test_8021x);