libnm: add nm_connectivity_state_cmp() helper

(cherry picked from commit 487ee687d5)
(cherry picked from commit 51b7b10d3d)
This commit is contained in:
Thomas Haller 2018-12-03 10:27:06 +01:00
parent 0624814af1
commit c155f776fd
2 changed files with 73 additions and 0 deletions

View file

@ -24,6 +24,21 @@
#include "nm-dbus-interface.h"
/*****************************************************************************/
static inline int
nm_connectivity_state_cmp (NMConnectivityState a, NMConnectivityState b)
{
if (a == NM_CONNECTIVITY_PORTAL && b == NM_CONNECTIVITY_LIMITED)
return 1;
if (b == NM_CONNECTIVITY_PORTAL && a == NM_CONNECTIVITY_LIMITED)
return -1;
NM_CMP_DIRECT (a, b);
return 0;
}
/*****************************************************************************/
#define NM_CONNECTIVITY_ERROR ((NMConnectivityState) -1)
#define NM_CONNECTIVITY_FAKE ((NMConnectivityState) -2)
#define NM_CONNECTIVITY_CANCELLED ((NMConnectivityState) -3)

View file

@ -29,6 +29,8 @@
#include "NetworkManagerUtils.h"
#include "nm-core-internal.h"
#include "nm-connectivity.h"
#include "nm-test-utils-core.h"
/* Reference implementation for nm_utils_ip6_address_clear_host_address.
@ -1733,6 +1735,60 @@ test_nm_utils_exp10 (void)
/*****************************************************************************/
static void
test_connectivity_state_cmp (void)
{
NMConnectivityState a;
#define _cmp(a, b, cmp) \
G_STMT_START { \
const NMConnectivityState _a = (a); \
const NMConnectivityState _b = (b); \
const int _cmp = (cmp); \
\
g_assert (NM_IN_SET (_cmp, -1, 0, 1)); \
g_assert_cmpint (nm_connectivity_state_cmp (_a, _b), ==, _cmp); \
g_assert_cmpint (nm_connectivity_state_cmp (_b, _a), ==, -_cmp); \
} G_STMT_END
for (a = NM_CONNECTIVITY_UNKNOWN; a <= NM_CONNECTIVITY_FULL; a++)
_cmp (a, a, 0);
_cmp (NM_CONNECTIVITY_UNKNOWN, NM_CONNECTIVITY_UNKNOWN, 0);
_cmp (NM_CONNECTIVITY_UNKNOWN, NM_CONNECTIVITY_NONE, -1);
_cmp (NM_CONNECTIVITY_UNKNOWN, NM_CONNECTIVITY_LIMITED, -1);
_cmp (NM_CONNECTIVITY_UNKNOWN, NM_CONNECTIVITY_PORTAL, -1);
_cmp (NM_CONNECTIVITY_UNKNOWN, NM_CONNECTIVITY_FULL, -1);
_cmp (NM_CONNECTIVITY_NONE, NM_CONNECTIVITY_UNKNOWN, 1);
_cmp (NM_CONNECTIVITY_NONE, NM_CONNECTIVITY_NONE, 0);
_cmp (NM_CONNECTIVITY_NONE, NM_CONNECTIVITY_LIMITED, -1);
_cmp (NM_CONNECTIVITY_NONE, NM_CONNECTIVITY_PORTAL, -1);
_cmp (NM_CONNECTIVITY_NONE, NM_CONNECTIVITY_FULL, -1);
_cmp (NM_CONNECTIVITY_LIMITED, NM_CONNECTIVITY_UNKNOWN, 1);
_cmp (NM_CONNECTIVITY_LIMITED, NM_CONNECTIVITY_NONE, 1);
_cmp (NM_CONNECTIVITY_LIMITED, NM_CONNECTIVITY_LIMITED, 0);
_cmp (NM_CONNECTIVITY_LIMITED, NM_CONNECTIVITY_PORTAL, -1);
_cmp (NM_CONNECTIVITY_LIMITED, NM_CONNECTIVITY_FULL, -1);
_cmp (NM_CONNECTIVITY_PORTAL, NM_CONNECTIVITY_UNKNOWN, 1);
_cmp (NM_CONNECTIVITY_PORTAL, NM_CONNECTIVITY_NONE, 1);
_cmp (NM_CONNECTIVITY_PORTAL, NM_CONNECTIVITY_LIMITED, 1);
_cmp (NM_CONNECTIVITY_PORTAL, NM_CONNECTIVITY_PORTAL, 0);
_cmp (NM_CONNECTIVITY_PORTAL, NM_CONNECTIVITY_FULL, -1);
_cmp (NM_CONNECTIVITY_FULL, NM_CONNECTIVITY_UNKNOWN, 1);
_cmp (NM_CONNECTIVITY_FULL, NM_CONNECTIVITY_NONE, 1);
_cmp (NM_CONNECTIVITY_FULL, NM_CONNECTIVITY_LIMITED, 1);
_cmp (NM_CONNECTIVITY_FULL, NM_CONNECTIVITY_PORTAL, 1);
_cmp (NM_CONNECTIVITY_FULL, NM_CONNECTIVITY_FULL, 0);
#undef _cmp
}
/*****************************************************************************/
NMTST_DEFINE ();
int
@ -1777,6 +1833,8 @@ main (int argc, char **argv)
g_test_add_func ("/general/stable-id/parse", test_stable_id_parse);
g_test_add_func ("/general/stable-id/generated-complete", test_stable_id_generated_complete);
g_test_add_func ("/core/general/test_connectivity_state_cmp", test_connectivity_state_cmp);
return g_test_run ();
}