diff options
author | Thomas Haller <thaller@redhat.com> | 2019-05-01 10:49:16 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-05-07 20:58:17 +0200 |
commit | fac95d0062d9bbe256b8e479ba7cb452cbac340e (patch) | |
tree | 699d9f30df3935cac30357ac28f8dbaf66eb4b1b | |
parent | 9d2623cceb8550fbe6becf5dde2e0cef152e1086 (diff) | |
download | NetworkManager-fac95d0062d9bbe256b8e479ba7cb452cbac340e.tar.gz |
libnm/tests: add test for _nm_utils_parse_tc_handle()
-rw-r--r-- | libnm-core/tests/test-setting.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/libnm-core/tests/test-setting.c b/libnm-core/tests/test-setting.c index 8784a27470..8bb6f04dee 100644 --- a/libnm-core/tests/test-setting.c +++ b/libnm-core/tests/test-setting.c @@ -3088,6 +3088,60 @@ test_routing_rule (gconstpointer test_data) /*****************************************************************************/ +static void +test_parse_tc_handle (void) +{ +#define _parse_tc_handle(str, exp) \ + G_STMT_START { \ + gs_free_error GError *_error = NULL; \ + GError **_perror = nmtst_get_rand_bool () ? &_error : NULL; \ + guint32 _v; \ + const guint32 _v_exp = (exp); \ + \ + _v = _nm_utils_parse_tc_handle (""str"", _perror); \ + \ + if (_v != _v_exp) \ + g_error ("%s:%d: \"%s\" gave %08x but %08x expected.", __FILE__, __LINE__, ""str"", _v, _v_exp); \ + \ + if (_v == TC_H_UNSPEC) \ + g_assert (!_perror || *_perror); \ + else \ + g_assert (!_perror || !*_perror); \ + \ + } G_STMT_END + +#define _parse_tc_handle_inval(str) _parse_tc_handle (str, TC_H_UNSPEC) +#define _parse_tc_handle_valid(str, maj, min) _parse_tc_handle (str, TC_H_MAKE (((guint32) (maj)) << 16, ((guint16) (min)))) + + _parse_tc_handle_inval (""); + _parse_tc_handle_inval (" "); + _parse_tc_handle_inval (" \n"); + _parse_tc_handle_valid ("1", 1, 0); + _parse_tc_handle_inval(" 1 "); + _parse_tc_handle_valid ("1:", 1, 0); + _parse_tc_handle_inval ("1: "); + _parse_tc_handle_valid ("1:0", 1, 0); + _parse_tc_handle_inval ("1 :0"); + _parse_tc_handle_inval ("1 \t\n\f\r:0"); + _parse_tc_handle_inval ("1 \t\n\f\r\v:0"); + _parse_tc_handle_inval (" 1 : 0 "); + _parse_tc_handle_valid (" \t\v\n1: 0", 1, 0); + _parse_tc_handle_valid ("1:2", 1, 2); + _parse_tc_handle_valid ("01:02", 1, 2); + _parse_tc_handle_valid ("0x01:0x02", 1, 2); + _parse_tc_handle_valid (" 01: 02", 1, 2); + _parse_tc_handle_valid ("019: 020", 0x19, 0x20); + _parse_tc_handle_valid ("FFFF: 020", 0xFFFF, 0x20); + _parse_tc_handle_valid ("FfFF: ffff", 0xFFFF, 0xFFFF); + _parse_tc_handle_valid ("FFFF", 0xFFFF, 0); + _parse_tc_handle_valid ("0xFFFF", 0xFFFF, 0); + _parse_tc_handle_inval ("10000"); + _parse_tc_handle_valid ("\t\n\f\r FFFF", 0xFFFF, 0); + _parse_tc_handle_valid ("\t\n\f\r \vFFFF", 0xFFFF, 0); +} + +/*****************************************************************************/ + NMTST_DEFINE (); int @@ -3173,5 +3227,7 @@ main (int argc, char **argv) g_test_add_data_func ("/libnm/settings/routing-rule/1", GINT_TO_POINTER (0), test_routing_rule); + g_test_add_func ("/libnm/parse-tc-handle", test_parse_tc_handle); + return g_test_run (); } |