mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-08 21:10:25 +01:00
shared/tests: add nmtst_rand_perm_gslist() helper
(cherry picked from commit 7b84c73331)
This commit is contained in:
parent
ba1cc6a288
commit
641eb7fd12
1 changed files with 25 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue