Issue 15246: Improve test coverage for collections.abc.Set. (Contributed by James King).

This commit is contained in:
Raymond Hettinger 2014-05-25 18:28:39 -07:00
parent 62f4dad816
commit 2d452ee166
2 changed files with 54 additions and 0 deletions

View file

@ -640,6 +640,59 @@ class TestCollectionABCs(ABCTestCase):
a, b = OneTwoThreeSet(), OneTwoThreeSet() a, b = OneTwoThreeSet(), OneTwoThreeSet()
self.assertTrue(hash(a) == hash(b)) self.assertTrue(hash(a) == hash(b))
def test_isdisjoint_Set(self):
class MySet(Set):
def __init__(self, itr):
self.contents = itr
def __contains__(self, x):
return x in self.contents
def __iter__(self):
return iter(self.contents)
def __len__(self):
return len([x for x in self.contents])
s1 = MySet((1, 2, 3))
s2 = MySet((4, 5, 6))
s3 = MySet((1, 5, 6))
self.assertTrue(s1.isdisjoint(s2))
self.assertFalse(s1.isdisjoint(s3))
def test_equality_Set(self):
class MySet(Set):
def __init__(self, itr):
self.contents = itr
def __contains__(self, x):
return x in self.contents
def __iter__(self):
return iter(self.contents)
def __len__(self):
return len([x for x in self.contents])
s1 = MySet((1,))
s2 = MySet((1, 2))
s3 = MySet((3, 4))
s4 = MySet((3, 4))
self.assertTrue(s2 > s1)
self.assertTrue(s1 < s2)
self.assertFalse(s2 <= s1)
self.assertFalse(s2 <= s3)
self.assertFalse(s1 >= s2)
self.assertEqual(s3, s4)
self.assertNotEqual(s2, s3)
def test_arithmetic_Set(self):
class MySet(Set):
def __init__(self, itr):
self.contents = itr
def __contains__(self, x):
return x in self.contents
def __iter__(self):
return iter(self.contents)
def __len__(self):
return len([x for x in self.contents])
s1 = MySet((1, 2, 3))
s2 = MySet((3, 4, 5))
s3 = s1 & s2
self.assertEqual(s3, MySet((3,)))
def test_MutableSet(self): def test_MutableSet(self):
self.assertIsInstance(set(), MutableSet) self.assertIsInstance(set(), MutableSet)
self.assertTrue(issubclass(set, MutableSet)) self.assertTrue(issubclass(set, MutableSet))

View file

@ -679,6 +679,7 @@ Jason Killen
Jan Kim Jan Kim
Taek Joo Kim Taek Joo Kim
Sam Kimbrel Sam Kimbrel
James King
W. Trevor King W. Trevor King
Paul Kippes Paul Kippes
Steve Kirsch Steve Kirsch