[pypy-commit] pypy int-float-list-strategy: Some skipped tests (for later maybe)
arigo
noreply at buildbot.pypy.org
Wed Jul 1 23:53:51 CEST 2015
Author: Armin Rigo <arigo at tunes.org>
Branch: int-float-list-strategy
Changeset: r78391:4cfaef813f82
Date: 2015-07-01 23:26 +0200
http://bitbucket.org/pypy/pypy/changeset/4cfaef813f82/
Log: Some skipped tests (for later maybe)
diff --git a/pypy/objspace/std/listobject.py b/pypy/objspace/std/listobject.py
--- a/pypy/objspace/std/listobject.py
+++ b/pypy/objspace/std/listobject.py
@@ -1448,7 +1448,7 @@
except IndexError:
raise
else:
- w_list.switch_to_object_strategy()
+ self.switch_to_next_strategy(w_list, w_item)
w_list.setitem(index, w_item)
def setslice(self, w_list, start, step, slicelength, w_other):
@@ -1741,8 +1741,8 @@
def switch_to_next_strategy(self, w_list, w_sample_item):
if type(w_sample_item) is W_IntObject:
- intval = self.space.int_w(w_sample_item)
- if longlong2float.can_encode_int32(intval):
+ sample_intval = self.space.int_w(w_sample_item)
+ if longlong2float.can_encode_int32(sample_intval):
# xxx we should be able to use the same lstorage, but
# there is a typing issue (float vs longlong)...
l = self.unerase(w_list.lstorage)
@@ -1797,6 +1797,9 @@
else:
return False
+ def list_is_correct_type(self, w_list):
+ return w_list.strategy is self.space.fromcache(IntOrFloatListStrategy)
+
class BytesListStrategy(ListStrategy):
import_from_mixin(AbstractUnwrappedStrategy)
diff --git a/pypy/objspace/std/test/test_liststrategies.py b/pypy/objspace/std/test/test_liststrategies.py
--- a/pypy/objspace/std/test/test_liststrategies.py
+++ b/pypy/objspace/std/test/test_liststrategies.py
@@ -856,6 +856,44 @@
assert space.int_w(w_l.getitem(1)) == 42
assert space.len_w(w_l) == 2
+ def test_int_or_float_extend(self):
+ space = self.space
+ w_l1 = W_ListObject(space, [space.wrap(0), space.wrap(1.2)])
+ w_l2 = W_ListObject(space, [space.wrap(3), space.wrap(4.5)])
+ assert isinstance(w_l1.strategy, IntOrFloatListStrategy)
+ assert isinstance(w_l2.strategy, IntOrFloatListStrategy)
+ w_l1.extend(w_l2)
+ assert isinstance(w_l1.strategy, IntOrFloatListStrategy)
+ assert space.unwrap(w_l1) == [0, 1.2, 3, 4.5]
+
+ def test_int_or_float_extend_mixed(self):
+ py.test.skip("XXX not implemented")
+ # lst = [0]; lst += [1.2]
+ # lst = [0]; lst += [1.2, 3]
+ # lst = [1.2]; lst += [0]
+ # lst = [1.2]; lst += [0, 3.4]
+ # lst = [0, 1.2]; lst += [3]
+ # lst = [0, 1.2]; lst += [3.4]
+
+ def test_int_or_float_setslice(self):
+ space = self.space
+ w_l1 = W_ListObject(space, [space.wrap(0), space.wrap(1.2)])
+ w_l2 = W_ListObject(space, [space.wrap(3), space.wrap(4.5)])
+ assert isinstance(w_l1.strategy, IntOrFloatListStrategy)
+ assert isinstance(w_l2.strategy, IntOrFloatListStrategy)
+ w_l1.setslice(0, 1, 1, w_l2)
+ assert isinstance(w_l1.strategy, IntOrFloatListStrategy)
+ assert space.unwrap(w_l1) == [3, 4.5, 1.2]
+
+ def test_int_or_float_setslice_mixed(self):
+ py.test.skip("XXX not implemented")
+ # lst = [0]; lst[:] = [1.2]
+ # lst = [0]; lst[:] = [1.2, 3]
+ # lst = [1.2]; lst[:] = [0]
+ # lst = [1.2]; lst[:] = [0, 3.4]
+ # lst = [0, 1.2]; lst[:] = [3]
+ # lst = [0, 1.2]; lst[:] = [3.4]
+
class TestW_ListStrategiesDisabled:
spaceconfig = {"objspace.std.withliststrategies": False}
More information about the pypy-commit
mailing list