]> granicus.if.org Git - python/commitdiff
Stronger tests for combinatoric relationships.
authorRaymond Hettinger <python@rcn.com>
Tue, 27 Jan 2009 09:52:35 +0000 (09:52 +0000)
committerRaymond Hettinger <python@rcn.com>
Tue, 27 Jan 2009 09:52:35 +0000 (09:52 +0000)
Lib/doctest.py
Lib/test/test_itertools.py

index 3f2baa54340a13379a987265141328eef41fe50d..aeeb15d1d56d474485382dc4022080468ece7e4c 100644 (file)
@@ -844,6 +844,8 @@ class DocTestFinder:
             globs = globs.copy()
         if extraglobs is not None:
             globs.update(extraglobs)
+        if '__name__' not in globs:
+            globs['__name__'] = '__main__'  # provide a default module name
 
         # Recursively expore `obj`, extracting DocTests.
         tests = []
@@ -1937,6 +1939,8 @@ def testfile(filename, module_relative=True, name=None, package=None,
         globs = globs.copy()
     if extraglobs is not None:
         globs.update(extraglobs)
+    if '__name__' not in globs:
+        globs['__name__'] = '__main__'
 
     if raise_on_error:
         runner = DebugRunner(verbose=verbose, optionflags=optionflags)
index 8d8e0596579bd56d0da586670aa1b79fda71e8cc..09908d699b2a6c2e793412968601dbe26f621469 100644 (file)
@@ -281,11 +281,15 @@ class TestBasicOps(unittest.TestCase):
             perm = list(permutations(s, r))
             comb = list(combinations(s, r))
 
+            self.assertEquals(len(prod), len(s)**r)
+            self.assertEquals(prod, sorted(set(prod)))                      # prod in lexicographic order without repeats
             self.assertEquals(cwr, [t for t in prod if sorted(t)==list(t)]) # cwr: prods which are sorted
             self.assertEquals(perm, [t for t in prod if len(set(t))==r])    # perm: prods with no dups
             self.assertEqual(comb, [t for t in perm if sorted(t)==list(t)]) # comb: perms that are sorted
             self.assertEqual(comb, [t for t in cwr if len(set(t))==r])      # comb: cwrs without dups
-            self.assertEqual(set(comb), set(cwr) & set(perm))               # comb: both a cwr and a perm
+            self.assertEqual(comb, filter(set(cwr).__contains__, perm))     # comb: perm that is a cwr
+            self.assertEqual(comb, filter(set(perm).__contains__, cwr))     # comb: cwr that is a perm
+            self.assertEqual(comb, sorted(set(cwr) & set(perm)))            # comb: both a cwr and a perm
 
     def test_compress(self):
         self.assertEqual(list(compress('ABCDEF', [1,0,1,0,1,1])), list('ACEF'))