mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-25 07:10:07 +01:00
platform/tests: add unit test checking consistency of NMPClass
This commit is contained in:
parent
8feeb199ad
commit
5da0d18fbe
1 changed files with 49 additions and 8 deletions
|
|
@ -6,19 +6,12 @@
|
|||
#include "libnm-platform/nm-netlink.h"
|
||||
#include "libnm-platform/nmp-netns.h"
|
||||
#include "libnm-platform/nm-platform-utils.h"
|
||||
#include "libnm-platform/nmp-object.h"
|
||||
|
||||
#include "libnm-glib-aux/nm-test-utils.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
void
|
||||
_nm_logging_clear_platform_logging_cache(void)
|
||||
{
|
||||
/* this symbols is required by nm-log-core library. */
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
test_use_symbols(void)
|
||||
{
|
||||
|
|
@ -140,6 +133,53 @@ test_nmp_link_mode_all_advertised_modes_bits(void)
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
test_nmpclass_consistency(void)
|
||||
{
|
||||
NMPObjectType obj_type;
|
||||
NMPObjectType obj_type2;
|
||||
|
||||
G_STATIC_ASSERT(G_N_ELEMENTS(_nmp_classes) == NMP_OBJECT_TYPE_MAX);
|
||||
|
||||
for (obj_type = 1; obj_type <= NMP_OBJECT_TYPE_MAX; obj_type++) {
|
||||
const NMPClass *klass = nmp_class_from_type(obj_type);
|
||||
gboolean is_lnk;
|
||||
|
||||
g_assert(klass);
|
||||
g_assert(klass == &_nmp_classes[obj_type - 1]);
|
||||
|
||||
g_assert_cmpint(klass->obj_type, ==, obj_type);
|
||||
g_assert(klass->obj_type_name);
|
||||
|
||||
g_assert((!!klass->cmd_obj_cmp) == (!!klass->cmd_obj_hash_update));
|
||||
g_assert((!!klass->cmd_plobj_cmp) == (!!klass->cmd_plobj_hash_update));
|
||||
|
||||
g_assert((!!klass->cmd_obj_cmp) != (!!klass->cmd_plobj_cmp));
|
||||
g_assert((!!klass->cmd_obj_hash_update) != (!!klass->cmd_plobj_hash_update));
|
||||
|
||||
g_assert_cmpint(klass->sizeof_public, >, 0);
|
||||
g_assert_cmpint(klass->sizeof_data, >=, klass->sizeof_public);
|
||||
|
||||
g_assert((!!klass->cmd_obj_to_string) != (!!klass->cmd_plobj_to_string));
|
||||
g_assert(!klass->cmd_plobj_to_string_id || klass->cmd_plobj_to_string);
|
||||
|
||||
is_lnk = (obj_type >= NMP_OBJECT_TYPE_LNK_BRIDGE && obj_type <= NMP_OBJECT_TYPE_LNK_BOND);
|
||||
if (klass->lnk_link_type == NM_LINK_TYPE_NONE) {
|
||||
G_STATIC_ASSERT(NM_LINK_TYPE_NONE == 0);
|
||||
g_assert(!is_lnk);
|
||||
} else
|
||||
g_assert(is_lnk);
|
||||
|
||||
for (obj_type2 = 1; obj_type2 < obj_type; obj_type2++) {
|
||||
const NMPClass *klass2 = nmp_class_from_type(obj_type2);
|
||||
|
||||
g_assert_cmpstr(klass->obj_type_name, !=, klass2->obj_type_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
NMTST_DEFINE();
|
||||
|
||||
int
|
||||
|
|
@ -150,6 +190,7 @@ main(int argc, char **argv)
|
|||
g_test_add_func("/nm-platform/test_use_symbols", test_use_symbols);
|
||||
g_test_add_func("/nm-platform/test_nmp_link_mode_all_advertised_modes_bits",
|
||||
test_nmp_link_mode_all_advertised_modes_bits);
|
||||
g_test_add_func("/nm-platform/test_nmpclass_consistency", test_nmpclass_consistency);
|
||||
|
||||
return g_test_run();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue