mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-06-19 08:58:28 +02:00
glib-aux/tests: add unbase64mem test
This is copied and adjusted from "src/core/tests/test-systemd.c", where it currently tests the systemd implementation.
This commit is contained in:
parent
0aa7d59557
commit
63dcc5680b
1 changed files with 65 additions and 0 deletions
|
|
@ -1729,6 +1729,70 @@ test_unbase64mem2(void)
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
_test_unbase64mem_mem(const char *base64, const guint8 *expected_arr, gsize expected_len)
|
||||
{
|
||||
gs_free char *expected_base64 = NULL;
|
||||
int r;
|
||||
nm_auto_free guint8 *exp2_arr = NULL;
|
||||
nm_auto_free guint8 *exp3_arr = NULL;
|
||||
gsize exp2_len;
|
||||
gsize exp3_len;
|
||||
|
||||
expected_base64 = g_base64_encode(expected_arr, expected_len);
|
||||
|
||||
r = nm_unbase64mem_full(expected_base64, strlen(expected_base64), TRUE, &exp2_arr, &exp2_len);
|
||||
g_assert_cmpint(r, ==, 0);
|
||||
g_assert_cmpmem(expected_arr, expected_len, exp2_arr, exp2_len);
|
||||
|
||||
if (!nm_streq(base64, expected_base64)) {
|
||||
r = nm_unbase64mem_full(base64, strlen(base64), TRUE, &exp3_arr, &exp3_len);
|
||||
g_assert_cmpint(r, ==, 0);
|
||||
g_assert_cmpmem(expected_arr, expected_len, exp3_arr, exp3_len);
|
||||
}
|
||||
}
|
||||
|
||||
#define _test_unbase64mem(base64, expected_str) \
|
||||
_test_unbase64mem_mem(base64, (const guint8 *) "" expected_str "", NM_STRLEN(expected_str))
|
||||
|
||||
static void
|
||||
_test_unbase64mem_inval(const char *base64)
|
||||
{
|
||||
gs_free guint8 *exp_arr = NULL;
|
||||
gsize exp_len = 0;
|
||||
int r;
|
||||
|
||||
r = nm_unbase64mem_full(base64, strlen(base64), TRUE, &exp_arr, &exp_len);
|
||||
g_assert_cmpint(r, <, 0);
|
||||
g_assert(!exp_arr);
|
||||
g_assert(exp_len == 0);
|
||||
}
|
||||
|
||||
static void
|
||||
test_unbase64mem3(void)
|
||||
{
|
||||
gs_free char *rnd_base64 = NULL;
|
||||
guint8 rnd_buf[30];
|
||||
guint i, rnd_len;
|
||||
|
||||
_test_unbase64mem("", "");
|
||||
_test_unbase64mem(" ", "");
|
||||
_test_unbase64mem(" Y Q == ", "a");
|
||||
_test_unbase64mem(" Y WJjZGV mZ 2g = ", "abcdefgh");
|
||||
_test_unbase64mem_inval(" Y %WJjZGV mZ 2g = ");
|
||||
_test_unbase64mem_inval(" Y %WJjZGV mZ 2g = a");
|
||||
_test_unbase64mem("YQ==", "a");
|
||||
_test_unbase64mem_inval("YQ==a");
|
||||
|
||||
rnd_len = nmtst_get_rand_uint32() % sizeof(rnd_buf);
|
||||
for (i = 0; i < rnd_len; i++)
|
||||
rnd_buf[i] = nmtst_get_rand_uint32() % 256;
|
||||
rnd_base64 = g_base64_encode(rnd_buf, rnd_len);
|
||||
_test_unbase64mem_mem(rnd_base64, rnd_buf, rnd_len);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
NMTST_DEFINE();
|
||||
|
||||
int
|
||||
|
|
@ -1766,6 +1830,7 @@ main(int argc, char **argv)
|
|||
g_test_add_func("/general/test_unbase64char", test_unbase64char);
|
||||
g_test_add_func("/general/test_unbase64mem1", test_unbase64mem1);
|
||||
g_test_add_func("/general/test_unbase64mem2", test_unbase64mem2);
|
||||
g_test_add_func("/general/test_unbase64mem3", test_unbase64mem3);
|
||||
|
||||
return g_test_run();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue