summaryrefslogtreecommitdiff
path: root/test/base/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/base/utils.py')
-rw-r--r--test/base/utils.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/base/utils.py b/test/base/utils.py
index c3d026f04..0add6dd66 100644
--- a/test/base/utils.py
+++ b/test/base/utils.py
@@ -116,6 +116,7 @@ class HashOverride(object):
class EqOverride(object):
def __init__(self, value=None):
self.value = value
+ __hash__ = object.__hash__
def __eq__(self, other):
if isinstance(other, EqOverride):
return self.value == other.value
@@ -260,6 +261,32 @@ class IdentitySetTest(unittest.TestCase):
self.assertRaises(TypeError, lambda: s1 - os2)
self.assertRaises(TypeError, lambda: s1 - [3, 4, 5])
+class OrderedIdentitySetTest(unittest.TestCase):
+
+ def assert_eq(self, identityset, expected_iterable):
+ expected = [id(o) for o in expected_iterable]
+ found = [id(o) for o in identityset]
+ eq_(found, expected)
+
+ def test_add(self):
+ elem = object
+ s = util.OrderedIdentitySet()
+ s.add(elem())
+ s.add(elem())
+
+ def test_intersection(self):
+ elem = object
+ eq_ = self.assert_eq
+
+ a, b, c, d, e, f, g = elem(), elem(), elem(), elem(), elem(), elem(), elem()
+
+ s1 = util.OrderedIdentitySet([a, b, c])
+ s2 = util.OrderedIdentitySet([d, e, f])
+ s3 = util.OrderedIdentitySet([a, d, f, g])
+ eq_(s1.intersection(s2), [])
+ eq_(s1.intersection(s3), [a])
+ eq_(s1.union(s2).intersection(s3), [a, d, f])
+
class DictlikeIteritemsTest(unittest.TestCase):
baseline = set([('a', 1), ('b', 2), ('c', 3)])