From 91bbd9a7b9735cba07b06400a7c467aab6facfde Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Fri, 2 May 2003 09:06:28 +0000 Subject: Used sets.Set() to compare unordered sequences. Improves clarity and brevity. --- Lib/test/test___all__.py | 7 +++---- Lib/test/test_builtin.py | 14 +++----------- Lib/test/test_glob.py | 7 ++----- Lib/test/test_pyclbr.py | 14 ++++---------- Lib/test/test_userdict.py | 10 +++------- Lib/test/test_weakref.py | 5 ++--- 6 files changed, 17 insertions(+), 40 deletions(-) diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py index 66e6eeb..e9cb093 100644 --- a/Lib/test/test___all__.py +++ b/Lib/test/test___all__.py @@ -2,6 +2,7 @@ import unittest from test import test_support from test.test_support import verify, verbose +from sets import Set import sys import warnings @@ -42,10 +43,8 @@ class AllTest(unittest.TestCase): exec "from %s import *" % modname in names if names.has_key("__builtins__"): del names["__builtins__"] - keys = names.keys() - keys.sort() - all = list(sys.modules[modname].__all__) # in case it's a tuple - all.sort() + keys = Set(names) + all = Set(sys.modules[modname].__all__) verify(keys==all, "%s != %s" % (keys, all)) def test_all(self): diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 505da70..97786ad 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -2,6 +2,7 @@ import test.test_support, unittest from test.test_support import fcmp, have_unicode, TESTFN, unlink +from sets import Set import sys, warnings, cStringIO warnings.filterwarnings("ignore", "hex../oct.. of negative int", @@ -1159,18 +1160,9 @@ class BuiltinTest(unittest.TestCase): get_vars_f2 = staticmethod(get_vars_f2) def test_vars(self): - a = b = None - a = vars().keys() - b = dir() - a.sort() - b.sort() - self.assertEqual(a, b) + self.assertEqual(Set(vars()), Set(dir())) import sys - a = vars(sys).keys() - b = dir(sys) - a.sort() - b.sort() - self.assertEqual(a, b) + self.assertEqual(Set(vars(sys)), Set(dir(sys))) self.assertEqual(self.get_vars_f0(), {}) self.assertEqual(self.get_vars_f2(), {'a': 1, 'b': 2}) self.assertRaises(TypeError, vars, 42, 42) diff --git a/Lib/test/test_glob.py b/Lib/test/test_glob.py index cfc3077..a06ce9d 100644 --- a/Lib/test/test_glob.py +++ b/Lib/test/test_glob.py @@ -2,6 +2,7 @@ import unittest from test.test_support import run_unittest, TESTFN import glob import os +from sets import Set def mkdirs(fname): if os.path.exists(fname) or fname == '': @@ -61,11 +62,7 @@ class GlobTests(unittest.TestCase): return glob.glob(p) def assertSequencesEqual_noorder(self, l1, l2): - l1 = list(l1) - l2 = list(l2) - l1.sort() - l2.sort() - self.assertEqual(l1, l2) + self.assertEqual(Set(l1), Set(l2)) def test_glob_literal(self): eq = self.assertSequencesEqual_noorder diff --git a/Lib/test/test_pyclbr.py b/Lib/test/test_pyclbr.py index 7a59c2e..1229962 100644 --- a/Lib/test/test_pyclbr.py +++ b/Lib/test/test_pyclbr.py @@ -7,6 +7,7 @@ import unittest, sys from types import ClassType, FunctionType, MethodType import pyclbr from unittest import TestCase +from sets import Set # This next line triggers an error on old versions of pyclbr. @@ -23,17 +24,10 @@ class PyclbrTest(TestCase): def assertListEq(self, l1, l2, ignore): ''' succeed iff {l1} - {ignore} == {l2} - {ignore} ''' - l1.sort() - l2.sort() - try: - for p1, p2 in (l1, l2), (l2, l1): - for item in p1: - ok = (item in p2) or (item in ignore) - if not ok: - self.fail("%r missing" % item) - except: + missing = (Set(l1) ^ Set(l2)) - Set(ignore) + if missing: print >>sys.stderr, "l1=%r\nl2=%r\nignore=%r" % (l1, l2, ignore) - raise + self.fail("%r missing" % missing.pop()) def assertHasattr(self, obj, attr, ignore): ''' succeed iff hasattr(obj,attr) or attr in ignore. ''' diff --git a/Lib/test/test_userdict.py b/Lib/test/test_userdict.py index bcf60a5..399ddda 100644 --- a/Lib/test/test_userdict.py +++ b/Lib/test/test_userdict.py @@ -1,6 +1,7 @@ # Check every path through every method of UserDict import test.test_support, unittest +from sets import Set import UserDict @@ -68,10 +69,7 @@ class TestMappingProtocol(unittest.TestCase): self.assert_(hasattr(iter, 'next')) self.assert_(hasattr(iter, '__iter__')) x = list(iter) - x.sort() - lst.sort() - ref.sort() - self.assert_(x==lst==ref) + self.assert_(Set(x)==Set(lst)==Set(ref)) check_iterandlist(d.iterkeys(), d.keys(), self.reference.keys()) check_iterandlist(iter(d), d.keys(), self.reference.keys()) check_iterandlist(d.itervalues(), d.values(), self.reference.values()) @@ -243,10 +241,8 @@ class UserDictTest(TestMappingProtocol): ikeys = [] for k in u2: ikeys.append(k) - ikeys.sort() keys = u2.keys() - keys.sort() - self.assertEqual(ikeys, keys) + self.assertEqual(Set(ikeys), Set(keys)) # Test setdefault t = UserDict.UserDict() diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py index eb87720..7e7d068 100644 --- a/Lib/test/test_weakref.py +++ b/Lib/test/test_weakref.py @@ -4,6 +4,7 @@ import UserList import weakref from test import test_support +from sets import Set class C: @@ -340,9 +341,7 @@ class MappingTestCase(TestBase): "wrong object returned by weak dict!") items1 = dict.items() items2 = dict.copy().items() - items1.sort() - items2.sort() - self.assert_(items1 == items2, + self.assert_(Set(items1) == Set(items2), "cloning of weak-keyed dictionary did not work!") del items1, items2 self.assert_(len(dict) == self.COUNT) -- cgit v0.12