summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Yves David <pierre-yves.david@logilab.fr>2008-06-23 11:56:28 +0200
committerPierre-Yves David <pierre-yves.david@logilab.fr>2008-06-23 11:56:28 +0200
commit9eded02584ac86707d53adbcc12ce7ff6ed72981 (patch)
treedae7a58eeb07bbdee146516c7cdf5c1c1da79bd9
parent44122d8bc6c78e5453169b03097f52dc7ea8477f (diff)
downloadlogilab-common-9eded02584ac86707d53adbcc12ce7ff6ed72981.tar.gz
add assertUnorderedIterableEquals
-rw-r--r--test/unittest_testlib.py39
-rw-r--r--testlib.py22
2 files changed, 44 insertions, 17 deletions
diff --git a/test/unittest_testlib.py b/test/unittest_testlib.py
index e140823..2a5302e 100644
--- a/test/unittest_testlib.py
+++ b/test/unittest_testlib.py
@@ -116,30 +116,37 @@ class TestlibTC(TestCase):
self.assertRaises(AssertionError, self.tc.assertXMLStringWellFormed, invalid)
- def test_set_equality_for_lists(self):
+ def test_unordered_equality_for_lists(self):
l1 = [0, 1, 2]
l2 = [1, 2, 3]
- self.assertRaises(AssertionError, self.tc.assertSetEqual, l1, l2)
- self.tc.assertSetEqual(l1, l1)
- self.tc.assertSetEqual([], [])
+ self.assertRaises(AssertionError, self.tc.assertUnorderedIterableEquals, l1, l2)
+ self.tc.assertUnorderedIterableEquals(l1, l1)
+ self.tc.assertUnorderedIterableEquals([], [])
l1 = [0, 1, 1]
l2 = [0, 1]
- self.assertRaises(AssertionError, self.tc.assertSetEqual, l1, l2)
- self.tc.assertSetEqual(l1, l1)
+ self.assertRaises(AssertionError, self.tc.assertUnorderedIterableEquals, l1, l2)
+ self.tc.assertUnorderedIterableEquals(l1, l1)
- def test_set_equality_for_dicts(self):
+ def test_unordered_equality_for_dicts(self):
d1 = {'a' : 1, 'b' : 2}
d2 = {'a' : 1}
- self.assertRaises(AssertionError, self.tc.assertSetEqual, d1, d2)
- self.tc.assertSetEqual(d1, d1)
- self.tc.assertSetEqual({}, {})
-
- def test_set_equality_for_iterables(self):
- self.assertRaises(AssertionError, self.tc.assertSetEqual, xrange(5), xrange(6))
- self.tc.assertSetEqual(xrange(5), range(5))
- self.tc.assertSetEqual([], ())
-
+ self.assertRaises(AssertionError, self.tc.assertUnorderedIterableEquals, d1, d2)
+ self.tc.assertUnorderedIterableEquals(d1, d1)
+ self.tc.assertUnorderedIterableEquals({}, {})
+
+ def test_unordered_equality_for_iterables(self):
+ self.assertRaises(AssertionError, self.tc.assertUnorderedIterableEquals, xrange(5), xrange(6))
+ self.tc.assertUnorderedIterableEquals(xrange(5), range(5))
+ self.tc.assertUnorderedIterableEquals([], ())
+
+ def test_unordered_equality_for_dicts(self):
+ s1 = set('ab')
+ s2 = set('a')
+ self.assertRaises(AssertionError, self.tc.assertSetEquals, s1, s2)
+ self.tc.assertSetEquals(s1, s1)
+ self.tc.assertSetEquals(set(), set())
+
def test_file_equality(self):
foo = join(dirname(__file__), 'data', 'foo.txt')
spam = join(dirname(__file__), 'data', 'spam.txt')
diff --git a/testlib.py b/testlib.py
index 334d076..0064468 100644
--- a/testlib.py
+++ b/testlib.py
@@ -1140,7 +1140,9 @@ class TestCase(unittest.TestCase):
self.fail(''.join(msgs))
assertDictEqual = assertDictEquals
- def assertSetEquals(self, got, expected, msg=None):
+
+
+ def assertUnorderedIterableEquals(self, got, expected, msg=None):
"""compares two iterable and shows difference between both"""
got, expected = list(got), list(expected)
if msg is None:
@@ -1155,6 +1157,24 @@ class TestCase(unittest.TestCase):
if msg is None:
msg = '\tunexpected: %s\n\tmissing: %s' % (unexpected, missing)
self.fail(msg)
+
+ assertUnorderedIterableEqual = assertUnorderedIterableEquals
+
+ def assertSetEquals(self,got,expected, msg=None):
+ if not(isinstance(got, set) or isinstance(expected, set)):
+ warn("the assertSetEquals function if now intended for set only."\
+ "use assertUnorderedIterableEquals instead.",
+ DeprecationWarning, 2)
+ return self.assertUnorderedIterableEquals(got,expected, msg)
+
+ missing = expected - got
+ unexpected = got - expected
+ if missing or unexpected:
+ if msg is None:
+ msg = '\tunexpected: %s\n\tmissing: %s' % (unexpected, missing)
+ self.fail(msg)
+
+
assertSetEqual = assertSetEquals
def assertListEquals(self, list_1, list_2, msg=None):