]> granicus.if.org Git - python/commitdiff
Add refcount test.
authorRaymond Hettinger <python@rcn.com>
Tue, 4 Feb 2003 05:47:30 +0000 (05:47 +0000)
committerRaymond Hettinger <python@rcn.com>
Tue, 4 Feb 2003 05:47:30 +0000 (05:47 +0000)
Lib/test/test_random.py

index cc9b44e77b6f466d8ad4c405c9642d5fd947e4f8..9a1636a2836ee4cdf79f0d55adce7d8746f7b5ff 100644 (file)
@@ -74,7 +74,7 @@ class TestBasicOps(unittest.TestCase):
         pop = range(n)
         trials = 10000  # large num prevents false negatives without slowing normal case
         def factorial(n):
-            return n==0 and 1 or n * factorial(n-1)
+            return reduce(int.__mul__, xrange(1, n), 1)
         for k in xrange(n):
             expected = factorial(n) / factorial(n-k)
             perms = {}
@@ -271,7 +271,7 @@ class TestModule(unittest.TestCase):
         # tests validity but not completeness of the __all__ list
         self.failUnless(Set(random.__all__) <= Set(dir(random)))
 
-def test_main():
+def test_main(verbose=None):
     suite = unittest.TestSuite()
     for testclass in (WichmannHill_TestBasicOps,
                       MersenneTwister_TestBasicOps,
@@ -280,5 +280,14 @@ def test_main():
         suite.addTest(unittest.makeSuite(testclass))
     test_support.run_suite(suite)
 
+    # verify reference counting
+    import sys
+    if verbose and hasattr(sys, "gettotalrefcount"):
+        counts = []
+        for i in xrange(5):
+            test_support.run_suite(suite)
+            counts.append(sys.gettotalrefcount()-i)
+        print counts
+
 if __name__ == "__main__":
-    test_main()
+    test_main(verbose=True)