shared/tests: add nmtst_rand_perm_gslist() helper

(cherry picked from commit 7b84c73331)
This commit is contained in:
Thomas Haller
2017-01-20 20:50:48 +01:00
parent ba1cc6a288
commit 641eb7fd12

View File

@@ -832,6 +832,31 @@ nmtst_rand_perm (GRand *rand, void *dst, const void *src, gsize elmt_size, gsize
return dst;
}
inline static GSList *
nmtst_rand_perm_gslist (GRand *rand, GSList *list)
{
GSList *result;
guint l;
if (!rand)
rand = nmtst_get_rand ();
/* no need for an efficient implementation :) */
result = 0;
for (l = g_slist_length (list); l > 0; l--) {
GSList *tmp;
tmp = g_slist_nth (list, g_rand_int (rand) % l);
g_assert (tmp);
list = g_slist_remove_link (list, tmp);
result = g_slist_concat (tmp, result);
}
g_assert (!list);
return result;
}
/*****************************************************************************/
inline static gboolean