@@ -2123,29 +2123,6 @@ def test_multiset_operations(self):
21232123 set_result = setop (set (p .elements ()), set (q .elements ()))
21242124 self .assertEqual (counter_result , dict .fromkeys (set_result , 1 ))
21252125
2126- def test_subset_superset_not_implemented (self ):
2127- # Verify that multiset comparison operations are not implemented.
2128-
2129- # These operations were intentionally omitted because multiset
2130- # comparison semantics conflict with existing dict equality semantics.
2131-
2132- # For multisets, we would expect that if p<=q and p>=q are both true,
2133- # then p==q. However, dict equality semantics require that p!=q when
2134- # one of sets contains an element with a zero count and the other
2135- # doesn't.
2136-
2137- p = Counter (a = 1 , b = 0 )
2138- q = Counter (a = 1 , c = 0 )
2139- self .assertNotEqual (p , q )
2140- with self .assertRaises (TypeError ):
2141- p < q
2142- with self .assertRaises (TypeError ):
2143- p <= q
2144- with self .assertRaises (TypeError ):
2145- p > q
2146- with self .assertRaises (TypeError ):
2147- p >= q
2148-
21492126 def test_inplace_operations (self ):
21502127 elements = 'abcd'
21512128 for i in range (1000 ):
@@ -2234,49 +2211,32 @@ def test_multiset_operations_equivalent_to_set_operations(self):
22342211 self .assertEqual (set (cp - cq ), sp - sq )
22352212 self .assertEqual (set (cp | cq ), sp | sq )
22362213 self .assertEqual (set (cp & cq ), sp & sq )
2237- self .assertEqual (cp .isequal (cq ), sp == sq )
2238- self .assertEqual (cp .issubset (cq ), sp .issubset (sq ))
2239- self .assertEqual (cp .issuperset (cq ), sp .issuperset (sq ))
2240- self .assertEqual (cp .isdisjoint (cq ), sp .isdisjoint (sq ))
2241-
2242- def test_multiset_equal (self ):
2243- self .assertTrue (Counter (a = 3 , b = 2 , c = 0 ).isequal ('ababa' ))
2244- self .assertFalse (Counter (a = 3 , b = 2 ).isequal ('babab' ))
2245-
2246- def test_multiset_subset (self ):
2247- self .assertTrue (Counter (a = 3 , b = 2 , c = 0 ).issubset ('ababa' ))
2248- self .assertFalse (Counter (a = 3 , b = 2 ).issubset ('babab' ))
2249-
2250- def test_multiset_superset (self ):
2251- self .assertTrue (Counter (a = 3 , b = 2 , c = 0 ).issuperset ('aab' ))
2252- self .assertFalse (Counter (a = 3 , b = 2 , c = 0 ).issuperset ('aabd' ))
2253-
2254- def test_multiset_disjoint (self ):
2255- self .assertTrue (Counter (a = 3 , b = 2 , c = 0 ).isdisjoint ('cde' ))
2256- self .assertFalse (Counter (a = 3 , b = 2 , c = 0 ).isdisjoint ('bcd' ))
2257-
2258- def test_multiset_predicates_with_negative_counts (self ):
2259- # Multiset predicates run on the output of the elements() method,
2260- # meaning that zero counts and negative counts are ignored.
2261- # The tests below confirm that we get that same results as the
2262- # tests above, even after a negative count has been included
2263- # in either *self* or *other*.
2264- self .assertTrue (Counter (a = 3 , b = 2 , c = 0 , d = - 1 ).isequal ('ababa' ))
2265- self .assertFalse (Counter (a = 3 , b = 2 , d = - 1 ).isequal ('babab' ))
2266- self .assertTrue (Counter (a = 3 , b = 2 , c = 0 , d = - 1 ).issubset ('ababa' ))
2267- self .assertFalse (Counter (a = 3 , b = 2 , d = - 1 ).issubset ('babab' ))
2268- self .assertTrue (Counter (a = 3 , b = 2 , c = 0 , d = - 1 ).issuperset ('aab' ))
2269- self .assertFalse (Counter (a = 3 , b = 2 , c = 0 , d = - 1 ).issuperset ('aabd' ))
2270- self .assertTrue (Counter (a = 3 , b = 2 , c = 0 , d = - 1 ).isdisjoint ('cde' ))
2271- self .assertFalse (Counter (a = 3 , b = 2 , c = 0 , d = - 1 ).isdisjoint ('bcd' ))
2272- self .assertTrue (Counter (a = 3 , b = 2 , c = 0 , d = - 1 ).isequal (Counter (a = 3 , b = 2 , c = - 1 )))
2273- self .assertFalse (Counter (a = 3 , b = 2 , d = - 1 ).isequal (Counter (a = 2 , b = 3 , c = - 1 )))
2274- self .assertTrue (Counter (a = 3 , b = 2 , c = 0 , d = - 1 ).issubset (Counter (a = 3 , b = 2 , c = - 1 )))
2275- self .assertFalse (Counter (a = 3 , b = 2 , d = - 1 ).issubset (Counter (a = 2 , b = 3 , c = - 1 )))
2276- self .assertTrue (Counter (a = 3 , b = 2 , c = 0 , d = - 1 ).issuperset (Counter (a = 2 , b = 1 , c = - 1 )))
2277- self .assertFalse (Counter (a = 3 , b = 2 , c = 0 , d = - 1 ).issuperset (Counter (a = 2 , b = 1 , c = - 1 , d = 1 )))
2278- self .assertTrue (Counter (a = 3 , b = 2 , c = 0 , d = - 1 ).isdisjoint (Counter (c = 1 , d = 2 , e = 3 , f = - 1 )))
2279- self .assertFalse (Counter (a = 3 , b = 2 , c = 0 , d = - 1 ).isdisjoint (Counter (b = 1 , c = 1 , d = 1 , e = - 1 )))
2214+ self .assertEqual (cp == cq , sp == sq )
2215+ self .assertEqual (cp != cq , sp != sq )
2216+ self .assertEqual (cp <= cq , sp <= sq )
2217+ self .assertEqual (cp >= cq , sp >= sq )
2218+ self .assertEqual (cp < cq , sp < sq )
2219+ self .assertEqual (cp > cq , sp > sq )
2220+
2221+ def test_eq (self ):
2222+ self .assertEqual (Counter (a = 3 , b = 2 , c = 0 ), Counter ('ababa' ))
2223+ self .assertNotEqual (Counter (a = 3 , b = 2 ), Counter ('babab' ))
2224+
2225+ def test_le (self ):
2226+ self .assertTrue (Counter (a = 3 , b = 2 , c = 0 ) <= Counter ('ababa' ))
2227+ self .assertFalse (Counter (a = 3 , b = 2 ) <= Counter ('babab' ))
2228+
2229+ def test_lt (self ):
2230+ self .assertTrue (Counter (a = 3 , b = 1 , c = 0 ) < Counter ('ababa' ))
2231+ self .assertFalse (Counter (a = 3 , b = 2 , c = 0 ) < Counter ('ababa' ))
2232+
2233+ def test_ge (self ):
2234+ self .assertTrue (Counter (a = 2 , b = 1 , c = 0 ) >= Counter ('aab' ))
2235+ self .assertFalse (Counter (a = 3 , b = 2 , c = 0 ) >= Counter ('aabd' ))
2236+
2237+ def test_gt (self ):
2238+ self .assertTrue (Counter (a = 3 , b = 2 , c = 0 ) > Counter ('aab' ))
2239+ self .assertFalse (Counter (a = 2 , b = 1 , c = 0 ) > Counter ('aab' ))
22802240
22812241
22822242################################################################################
0 commit comments