[pypy-commit] pypy reorder-map-attributes: a failing test of an example that reorders infinitely often
cfbolz
pypy.commits at gmail.com
Mon Feb 15 05:11:12 EST 2016
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: reorder-map-attributes
Changeset: r82254:433dbd99e066
Date: 2016-02-14 17:30 +0100
http://bitbucket.org/pypy/pypy/changeset/433dbd99e066/
Log: a failing test of an example that reorders infinitely often
diff --git a/pypy/objspace/std/test/test_mapdict.py b/pypy/objspace/std/test/test_mapdict.py
--- a/pypy/objspace/std/test/test_mapdict.py
+++ b/pypy/objspace/std/test/test_mapdict.py
@@ -148,34 +148,35 @@
obj2.setdictvalue(space, "a", 30)
obj2.setdictvalue(space, "c", 40)
obj2.setdictvalue(space, "b", 50)
-
+
obj3.setdictvalue(space, "c", 30)
obj3.setdictvalue(space, "a", 40)
obj3.setdictvalue(space, "b", 50)
-
+
obj4.setdictvalue(space, "c", 30)
obj4.setdictvalue(space, "b", 40)
obj4.setdictvalue(space, "a", 50)
-
+
obj5.setdictvalue(space, "b", 30)
obj5.setdictvalue(space, "a", 40)
obj5.setdictvalue(space, "c", 50)
-
+
obj6.setdictvalue(space, "b", 30)
obj6.setdictvalue(space, "c", 40)
obj6.setdictvalue(space, "a", 50)
-
+
assert obj.map is obj2.map
assert obj.map is obj3.map
assert obj.map is obj4.map
assert obj.map is obj5.map
assert obj.map is obj6.map
+
def test_insert_different_orders_4():
cls = Class()
obj = cls.instantiate()
obj2 = cls.instantiate()
-
+
obj.setdictvalue(space, "a", 10)
obj.setdictvalue(space, "b", 20)
obj.setdictvalue(space, "c", 30)
@@ -192,7 +193,7 @@
cls = Class()
obj = cls.instantiate()
obj2 = cls.instantiate()
-
+
obj.setdictvalue(space, "a", 10)
obj.setdictvalue(space, "b", 20)
obj.setdictvalue(space, "c", 30)
@@ -211,6 +212,7 @@
assert obj.map is obj3.map
+
def test_bug_stack_overflow_insert_attributes():
cls = Class()
obj = cls.instantiate()
@@ -218,6 +220,7 @@
for i in range(1000):
obj.setdictvalue(space, str(i), i)
+
def test_insert_different_orders_perm():
from itertools import permutations
cls = Class()
@@ -238,6 +241,19 @@
print len(seen_maps)
+
+def test_bug_infinite_loop():
+ cls = Class()
+ obj = cls.instantiate()
+ obj.setdictvalue(space, "e", 1)
+ obj2 = cls.instantiate()
+ obj2.setdictvalue(space, "f", 2)
+ obj3 = cls.instantiate()
+ obj3.setdictvalue(space, "a", 3)
+ obj3.setdictvalue(space, "e", 4)
+ obj3.setdictvalue(space, "f", 5)
+
+
def test_attr_immutability(monkeypatch):
cls = Class()
obj = cls.instantiate()
@@ -1272,4 +1288,4 @@
def test_setdefault_fast(self):
# mapdict can't pass this, which is fine
- pass
\ No newline at end of file
+ pass
More information about the pypy-commit
mailing list