aboutsummaryrefslogtreecommitdiff
path: root/bindings/python-cffi/tests
diff options
context:
space:
mode:
authorFloris Bruynooghe <flub@devork.be>2020-06-14 20:33:55 +0200
committerDavid Bremner <david@tethera.net>2020-06-15 07:14:11 -0300
commita00f3a1f7a646d9834a5de57a29cf3e900dbdcdf (patch)
treed6ae4d86a64ed4c1dd36f05362196daebee88781 /bindings/python-cffi/tests
parent963e363a234f1c8bdf1ae68956f80a2538bee7dc (diff)
Add missing set methods to tagsets
Even though we use collections.abc.Set which implements all these methods under their operator names, the actual named variations of these methods are shockingly missing. So let's add them manually.
Diffstat (limited to 'bindings/python-cffi/tests')
-rw-r--r--bindings/python-cffi/tests/test_tags.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/bindings/python-cffi/tests/test_tags.py b/bindings/python-cffi/tests/test_tags.py
index f12fa1e6..faf3947b 100644
--- a/bindings/python-cffi/tests/test_tags.py
+++ b/bindings/python-cffi/tests/test_tags.py
@@ -50,6 +50,22 @@ class TestImmutable:
assert 'unread' in tagset
assert 'foo' not in tagset
+ def test_isdisjoint(self, tagset):
+ assert tagset.isdisjoint(set(['spam', 'ham']))
+ assert not tagset.isdisjoint(set(['inbox']))
+
+ def test_issubset(self, tagset):
+ assert {'inbox'} <= tagset
+ assert {'inbox'}.issubset(tagset)
+ assert tagset <= {'inbox', 'unread', 'spam'}
+ assert tagset.issubset({'inbox', 'unread', 'spam'})
+
+ def test_issuperset(self, tagset):
+ assert {'inbox', 'unread', 'spam'} >= tagset
+ assert {'inbox', 'unread', 'spam'}.issuperset(tagset)
+ assert tagset >= {'inbox'}
+ assert tagset.issuperset({'inbox'})
+
def test_iter(self, tagset):
expected = sorted(['unread', 'inbox'])
found = []
@@ -78,18 +94,30 @@ class TestImmutable:
assert isinstance(common, set)
assert isinstance(common, collections.abc.Set)
assert common == {'unread'}
+ common = tagset.intersection({'unread'})
+ assert isinstance(common, set)
+ assert isinstance(common, collections.abc.Set)
+ assert common == {'unread'}
def test_or(self, tagset):
res = tagset | {'foo'}
assert isinstance(res, set)
assert isinstance(res, collections.abc.Set)
assert res == {'unread', 'inbox', 'foo'}
+ res = tagset.union({'foo'})
+ assert isinstance(res, set)
+ assert isinstance(res, collections.abc.Set)
+ assert res == {'unread', 'inbox', 'foo'}
def test_sub(self, tagset):
res = tagset - {'unread'}
assert isinstance(res, set)
assert isinstance(res, collections.abc.Set)
assert res == {'inbox'}
+ res = tagset.difference({'unread'})
+ assert isinstance(res, set)
+ assert isinstance(res, collections.abc.Set)
+ assert res == {'inbox'}
def test_rsub(self, tagset):
res = {'foo', 'unread'} - tagset
@@ -102,6 +130,10 @@ class TestImmutable:
assert isinstance(res, set)
assert isinstance(res, collections.abc.Set)
assert res == {'inbox', 'foo'}
+ res = tagset.symmetric_difference({'unread', 'foo'})
+ assert isinstance(res, set)
+ assert isinstance(res, collections.abc.Set)
+ assert res == {'inbox', 'foo'}
def test_rxor(self, tagset):
res = {'unread', 'foo'} ^ tagset
@@ -109,6 +141,12 @@ class TestImmutable:
assert isinstance(res, collections.abc.Set)
assert res == {'inbox', 'foo'}
+ def test_copy(self, tagset):
+ res = tagset.copy()
+ assert isinstance(res, set)
+ assert isinstance(res, collections.abc.Set)
+ assert res == {'inbox', 'unread'}
+
class TestMutableTagset:
@@ -175,3 +213,27 @@ class TestMutableTagset:
msg.tags.to_maildir_flags()
flags = msg.path.name.split(',')[-1]
assert 'F' not in flags
+
+ def test_isdisjoint(self, tagset):
+ assert tagset.isdisjoint(set(['spam', 'ham']))
+ assert not tagset.isdisjoint(set(['inbox']))
+
+ def test_issubset(self, tagset):
+ assert {'inbox'} <= tagset
+ assert {'inbox'}.issubset(tagset)
+ assert not {'spam'} <= tagset
+ assert not {'spam'}.issubset(tagset)
+ assert tagset <= {'inbox', 'unread', 'spam'}
+ assert tagset.issubset({'inbox', 'unread', 'spam'})
+ assert not {'inbox', 'unread', 'spam'} <= tagset
+ assert not {'inbox', 'unread', 'spam'}.issubset(tagset)
+
+ def test_issuperset(self, tagset):
+ assert {'inbox', 'unread', 'spam'} >= tagset
+ assert {'inbox', 'unread', 'spam'}.issuperset(tagset)
+ assert tagset >= {'inbox'}
+ assert tagset.issuperset({'inbox'})
+
+ def test_union(self, tagset):
+ assert {'spam'}.union(tagset) == {'inbox', 'unread', 'spam'}
+ assert tagset.union({'spam'}) == {'inbox', 'unread', 'spam'}