Permalink
Browse files
Add tests and design notes for Counter subset/superset operations. (G…
- Loading branch information
Showing
with
23 additions
and
0 deletions.
-
+23
−0
Lib/test/test_collections.py
|
|
@@ -2064,6 +2064,29 @@ def test_multiset_operations(self): |
|
|
set_result = setop(set(p.elements()), set(q.elements())) |
|
|
self.assertEqual(counter_result, dict.fromkeys(set_result, 1)) |
|
|
|
|
|
def test_subset_superset_not_implemented(self): |
|
|
# Verify that multiset comparison operations are not implemented. |
|
|
|
|
|
# These operations were intentionally omitted because multiset |
|
|
# comparison semantics conflict with existing dict equality semantics. |
|
|
|
|
|
# For multisets, we would expect that if p<=q and p>=q are both true, |
|
|
# then p==q. However, dict equality semantics require that p!=q when |
|
|
# one of sets contains an element with a zero count and the other |
|
|
# doesn't. |
|
|
|
|
|
p = Counter(a=1, b=0) |
|
|
q = Counter(a=1, c=0) |
|
|
self.assertNotEqual(p, q) |
|
|
with self.assertRaises(TypeError): |
|
|
p < q |
|
|
with self.assertRaises(TypeError): |
|
|
p <= q |
|
|
with self.assertRaises(TypeError): |
|
|
p > q |
|
|
with self.assertRaises(TypeError): |
|
|
p >= q |
|
|
|
|
|
def test_inplace_operations(self): |
|
|
elements = 'abcd' |
|
|
for i in range(1000): |
|
|
|
0 comments on commit
1ca8fb1