[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