From: Raymond Hettinger Date: Mon, 26 May 2014 01:28:39 +0000 (-0700) Subject: Issue 15246: Improve test coverage for collections.abc.Set. (Contributed by James... X-Git-Tag: v3.5.0a1~1595 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2d452ee166c15002cdb70fab69dc654aac5db0a0;p=python Issue 15246: Improve test coverage for collections.abc.Set. (Contributed by James King). --- diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py index 7e149808d4..a53862a5dc 100644 --- a/Lib/test/test_collections.py +++ b/Lib/test/test_collections.py @@ -640,6 +640,59 @@ class TestCollectionABCs(ABCTestCase): a, b = OneTwoThreeSet(), OneTwoThreeSet() 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): self.assertIsInstance(set(), MutableSet) self.assertTrue(issubclass(set, MutableSet)) diff --git a/Misc/ACKS b/Misc/ACKS index 68701c486e..f25da5efe6 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -679,6 +679,7 @@ Jason Killen Jan Kim Taek Joo Kim Sam Kimbrel +James King W. Trevor King Paul Kippes Steve Kirsch