From 1a227524c42ec3e75cc62043b275c6d85ad5d0dd Mon Sep 17 00:00:00 2001 From: Bob Halley Date: Fri, 19 Jun 2020 09:56:13 -0700 Subject: [PATCH] improve set coverage --- dns/set.py | 2 +- tests/test_set.py | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/dns/set.py b/dns/set.py index a77bfc11..0982d787 100644 --- a/dns/set.py +++ b/dns/set.py @@ -21,7 +21,7 @@ import sys if sys.version_info >= (3, 7): odict = dict else: - from collections import OrderedDict as odict + from collections import OrderedDict as odict # pragma: no cover class Set: diff --git a/tests/test_set.py b/tests/test_set.py index d3fa5ea1..8019d577 100644 --- a/tests/test_set.py +++ b/tests/test_set.py @@ -15,6 +15,7 @@ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +import copy import unittest import dns.set @@ -54,6 +55,12 @@ class SetTestCase(unittest.TestCase): e = S([1, 2, 3, 4]) self.assertEqual(s1 | s2, e) + def testUnionPlusSyntax(self): + s1 = S([1, 2, 3]) + s2 = S([3, 4]) + e = S([1, 2, 3, 4]) + self.assertEqual(s1 + s2, e) + def testIntersection1(self): s1 = S([1, 2, 3]) s2 = S([1, 2, 3]) @@ -221,6 +228,39 @@ class SetTestCase(unittest.TestCase): self.assertNotEqual(s1, s2) s1.add(1) self.assertEqual(s1, s2) + s2 = copy.copy(s1) + self.assertEqual(s1, s2) + + def testBadUpdates(self): + s = S([1, 2, 3]) + self.assertRaises(ValueError, lambda: s.union_update(1)) + self.assertRaises(ValueError, lambda: s.intersection_update(1)) + + def testSelfUpdates(self): + expected = S([1, 2, 3]) + s = S([1, 2, 3]) + s.union_update(s) + self.assertEqual(s, expected) + s.intersection_update(s) + self.assertEqual(s, expected) + s.difference_update(s) + self.assertTrue(len(s) == 0) + + def testBadSubsetSuperset(self): + s = S([1, 2, 3]) + self.assertRaises(ValueError, lambda: s.issubset(123)) + self.assertRaises(ValueError, lambda: s.issuperset(123)) + + def testIncrementalOperators(self): + s = S([1, 2, 3]) + s += S([5, 4]) + self.assertEqual(s, S([1, 2, 3, 4, 5])) + s -= S([1, 2]) + self.assertEqual(s, S([3, 4, 5])) + s |= S([1, 2]) + self.assertEqual(s, S([1, 2, 3, 4, 5])) + s &= S([1, 2]) + self.assertEqual(s, S([1, 2])) if __name__ == '__main__': unittest.main() -- 2.47.3