[pypy-svn] r48069 - in pypy/dist/pypy/lang/smalltalk: . test
niko at codespeak.net
niko at codespeak.net
Fri Oct 26 16:43:03 CEST 2007
Author: niko
Date: Fri Oct 26 16:43:03 2007
New Revision: 48069
Modified:
pypy/dist/pypy/lang/smalltalk/model.py
pypy/dist/pypy/lang/smalltalk/primitives.py
pypy/dist/pypy/lang/smalltalk/test/test_primitives.py
Log:
(all)
back out our last change, so that byte objects expect integers again
Modified: pypy/dist/pypy/lang/smalltalk/model.py
==============================================================================
--- pypy/dist/pypy/lang/smalltalk/model.py (original)
+++ pypy/dist/pypy/lang/smalltalk/model.py Fri Oct 26 16:43:03 2007
@@ -162,11 +162,10 @@
def at0(self, index0):
from pypy.lang.smalltalk import objtable
- return objtable.CharacterTable[self.getbyte(index0)]
+ return objtable.wrap_int(self.getbyte(index0))
def atput0(self, index0, w_value):
- from pypy.lang.smalltalk import objtable
- self.setbyte(index0, objtable.ord_w_char(w_value))
+ self.setbyte(index0, unwrap_int(w_value))
def getbyte(self, n):
return ord(self.bytes[n])
Modified: pypy/dist/pypy/lang/smalltalk/primitives.py
==============================================================================
--- pypy/dist/pypy/lang/smalltalk/primitives.py (original)
+++ pypy/dist/pypy/lang/smalltalk/primitives.py Fri Oct 26 16:43:03 2007
@@ -308,8 +308,11 @@
@expose_primitive(AT_PUT, unwrap_spec=[object, index1_0, object])
def func(interp, w_obj, n0, w_val):
assert_valid_index(n0, w_obj)
- w_obj.atput0(n0, w_val)
- return w_val
+ try:
+ w_obj.atput0(n0, w_val)
+ return w_val
+ except model.UnwrappingError:
+ raise PrimitiveFailedError()
@expose_primitive(SIZE, unwrap_spec=[object])
def func(interp, w_obj):
Modified: pypy/dist/pypy/lang/smalltalk/test/test_primitives.py
==============================================================================
--- pypy/dist/pypy/lang/smalltalk/test/test_primitives.py (original)
+++ pypy/dist/pypy/lang/smalltalk/test/test_primitives.py Fri Oct 26 16:43:03 2007
@@ -187,15 +187,13 @@
assert prim(primitives.AT_PUT, [w_obj, 1, 22]).value == 22
assert prim(primitives.AT, [w_obj, 1]).value == 22
-def test_at_bytes():
- assert prim(primitives.AT, ["abc", 1]) is wrap("a")
-
-def test_at_put_bytes():
+def test_at_and_at_put_bytes():
w_str = wrap("abc")
- assert prim(primitives.AT_PUT, [w_str, 1, "d"]) is wrap("d")
- assert prim(primitives.AT, [w_str, 1]) is wrap("d")
- assert prim(primitives.AT, [w_str, 2]) is wrap("b")
- assert prim(primitives.AT, [w_str, 3]) is wrap("c")
+ prim_fails(primitives.AT_PUT, [w_str, 1, "d"])
+ assert prim(primitives.AT_PUT, [w_str, 1, ord('d')]).value == ord('d')
+ assert prim(primitives.AT, [w_str, 1]).value == ord('d')
+ assert prim(primitives.AT, [w_str, 2]).value == ord('b')
+ assert prim(primitives.AT, [w_str, 3]).value == ord('c')
def test_invalid_at_put():
w_obj = mockclass(0).as_class_get_shadow().new()
More information about the Pypy-commit
mailing list