Author: Antonio Cuni <[email protected]>
Branch: py3k
Changeset: r57771:2ea52932a24a
Date: 2012-10-03 15:00 +0200
http://bitbucket.org/pypy/pypy/changeset/2ea52932a24a/

Log:    fix != between dict.{keys,items} and {set,frozenset}

diff --git a/pypy/objspace/std/dictmultiobject.py 
b/pypy/objspace/std/dictmultiobject.py
--- a/pypy/objspace/std/dictmultiobject.py
+++ b/pypy/objspace/std/dictmultiobject.py
@@ -982,6 +982,13 @@
 eq__DictViewItems_settypedef = eq__DictViewItems_DictViewItems
 eq__DictViewItems_frozensettypedef = eq__DictViewItems_DictViewItems
 
+def ne__DictViewKeys_settypedef(space, w_dict, w_set):
+    return space.not_(eq__DictViewItems_settypedef(space, w_dict, w_set))
+ne__DictViewKeys_frozensettypedef = ne__DictViewKeys_settypedef
+
+def ne__DictViewItems_settypedef(space, w_dict, w_set):
+    return space.not_(eq__DictViewItems_settypedef(space, w_dict, w_set))
+ne__DictViewItems_frozensettypedef = ne__DictViewItems_settypedef
 
 def repr__DictViewKeys(space, w_dictview):
     w_seq = space.call_function(space.w_list, w_dictview)
diff --git a/pypy/objspace/std/test/test_dictmultiobject.py 
b/pypy/objspace/std/test/test_dictmultiobject.py
--- a/pypy/objspace/std/test/test_dictmultiobject.py
+++ b/pypy/objspace/std/test/test_dictmultiobject.py
@@ -784,7 +784,7 @@
         assert d1.items() - d2.items() == set([('a', 1)])
         assert d1.items() - d3.items() == set([('a', 1), ('b', 2)])
 
-    def test_keys_items_set_operations_any_type(self):
+    def test_keys_set_operations_any_type(self):
         d = {1: 'a', 2: 'b', 3: 'c'}
         assert d.keys() & {1} == {1}
         assert d.keys() & {1: 'foo'} == {1}
@@ -799,9 +799,35 @@
         #
         assert d.keys() == {1, 2, 3}
         assert {1, 2, 3} == d.keys()
+        assert d.keys() == frozenset({1, 2, 3})
+        assert frozenset({1, 2, 3}) == d.keys()
         assert not d.keys() != {1, 2, 3}
         assert not {1, 2, 3} != d.keys()
-        
+        assert not d.keys() != frozenset({1, 2, 3})
+        assert not frozenset({1, 2, 3}) != d.keys()
+
+    def test_items_set_operations_any_type(self):
+        d = {1: 'a', 2: 'b', 3: 'c'}
+        assert d.items() & {(1, 'a')} == {(1, 'a')}
+        assert d.items() & {(1, 'a'): 'foo'} == {(1, 'a')}
+        assert d.items() & [(1, 'a'), (2, 'b')] == {(1, 'a'), (2, 'b')}
+        #
+        assert {(1, 'a')} & d.items() == {(1, 'a')}
+        assert {(1, 'a'): 'foo'} & d.items() == {(1, 'a')}
+        assert [(1, 'a'), (2, 'b')] & d.items() == {(1, 'a'), (2, 'b')}
+        #
+        assert d.items() - {(1, 'a')} == {(2, 'b'), (3, 'c')}
+        assert {(1, 'a'), 4} - d.items() == {4}
+        #
+        assert d.items() == {(1, 'a'), (2, 'b'), (3, 'c')}
+        assert {(1, 'a'), (2, 'b'), (3, 'c')} == d.items()
+        assert d.items() == frozenset({(1, 'a'), (2, 'b'), (3, 'c')})
+        assert frozenset({(1, 'a'), (2, 'b'), (3, 'c')}) == d.items()
+        assert not d.items() != {(1, 'a'), (2, 'b'), (3, 'c')}
+        assert not {(1, 'a'), (2, 'b'), (3, 'c')} != d.items()
+        assert not d.items() != frozenset({(1, 'a'), (2, 'b'), (3, 'c')})
+        assert not frozenset({(1, 'a'), (2, 'b'), (3, 'c')}) != d.items()
+
     def test_keys_items_contained(self):
         def helper(fn):
             empty = fn(dict())
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to