rand.c: Implement the `passes' property of the `DSARand' generator.
[catacomb-python] / t / t-rand.py
index a8faa0b..7b19ec4 100644 (file)
@@ -122,12 +122,16 @@ class TestRandomGenerator (U.TestCase):
   def test_dsarand(me):
     seed = T.span(16)
     n = C.MP.loadb(seed)
-    rng = C.DSARand(seed)
+    rng = C.DSARand(seed, passes = 2)
     me.check_rand(rng)
-    if T.MAXFIXNUM == (1 << 31) - 1: steps = 153 + 3
-    elif T.MAXFIXNUM == (1 << 63) - 1: steps = 153
+    if T.MAXFIXNUM == (1 << 31) - 1: steps = 2*153, 3*153 + 1
+    elif T.MAXFIXNUM == (1 << 63) - 1: steps = 2*153 + 8, 3*153 + 8
     else: steps = None
-    if steps is not None: me.assertEqual(rng.seed, (n + steps).storeb(16))
+    if steps is not None: me.assertEqual(rng.seed, (n + steps[0]).storeb(16))
+    me.assertEqual(rng.passes, 2);
+    rng.passes = 1
+    me.check_rand(rng)
+    if steps is not None: me.assertEqual(rng.seed, (n + steps[1]).storeb(16))
 
   def test_bbs(me):
     ev = T.EventRecorder()