diff options
Diffstat (limited to 'test/base/utils.py')
-rw-r--r-- | test/base/utils.py | 27 |
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)]) |