"""
from mjo.clan.clan import Clans
from mjo.clan.jordan_spin_clan import JordanSpinClan
+from mjo.clan.random import random_clan
from mjo.clan.t_algebra_clan import ( ComplexHermitianClan,
RealSymmetricClan )
from mjo.clan.trivial_clan import TrivialClan
--- /dev/null
+r"""
+Random test helpers.
+"""
+
+def random_clan():
+ r"""
+ Return a random clan from a pre-determined list.
+
+ At the moment, this is guaranteed to return a normal decomposition.
+
+ SETUP::
+
+ sage: from mjo.clan.clan import Clans
+ sage: from mjo.clan.random import random_clan
+
+ EXAMPLES::
+
+ sage: random_clan() in Clans
+ True
+
+ """
+ from sage.rings.rational_field import QQ
+ from random import choice
+
+ from mjo.clan.vinberg_clan import VinbergClan
+ from mjo.clan.jordan_spin_clan import JordanSpinClan
+ from mjo.clan.t_algebra_clan import (ComplexHermitianClan,
+ RealSymmetricClan)
+ from mjo.clan.trivial_clan import TrivialClan
+
+ choices = { TrivialClan: [QQ],
+ VinbergClan: [QQ],
+ JordanSpinClan: tuple(range(1,10)),
+ RealSymmetricClan: tuple(range(1,7)),
+ ComplexHermitianClan: tuple(range(1,6)) }
+ key = choice(list(choices.keys()))
+ arg = choice(choices[key])
+ return key(arg)