[pypy-svn] r48057 - in pypy/dist/pypy/lang/smalltalk: . test

niko at codespeak.net niko at codespeak.net
Fri Oct 26 14:49:20 CEST 2007


Author: niko
Date: Fri Oct 26 14:49:20 2007
New Revision: 48057

Added:
   pypy/dist/pypy/lang/smalltalk/find_untested_prims.sh   (contents, props changed)
Modified:
   pypy/dist/pypy/lang/smalltalk/test/test_interpreter.py
   pypy/dist/pypy/lang/smalltalk/test/test_primitives.py
Log:
(niko, lukas)
implement tests for CLASS and MULTIPLY primitives



Added: pypy/dist/pypy/lang/smalltalk/find_untested_prims.sh
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/lang/smalltalk/find_untested_prims.sh	Fri Oct 26 14:49:20 2007
@@ -0,0 +1,5 @@
+#!/bin/sh
+grep '^[A-Z][A-Z_]' primitives.py | awk '{print $1;}' | sort | uniq > pcodes.1
+grep 'primitives.[A-Z][A-Z_]' test/test_primitives.py | sed 's/.*primitives.\([A-Z_]*\).*/\1/g' | sort | uniq > pcodes.2
+echo Unimplemented primitive codes:
+diff pcodes.1 pcodes.2

Modified: pypy/dist/pypy/lang/smalltalk/test/test_interpreter.py
==============================================================================
--- pypy/dist/pypy/lang/smalltalk/test/test_interpreter.py	(original)
+++ pypy/dist/pypy/lang/smalltalk/test/test_interpreter.py	Fri Oct 26 14:49:20 2007
@@ -62,7 +62,6 @@
                 res.storevarpointer(i, fakeliteral(lit[i]))
             return res
         return lit
-        
     return ["methodheader"] + [fakeliteral(lit) for lit in literals]
 
 def new_interpreter(bytes, receiver=objtable.w_nil):

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 14:49:20 2007
@@ -59,6 +59,15 @@
 def test_small_int_minus_fail():
     prim_fails(primitives.SUBTRACT, [-1073741823,2])
     
+def test_small_int_multiply():
+    assert prim(primitives.MULTIPLY, [6,3]).value == 18
+
+def test_small_int_multiply_overflow():
+    prim_fails(primitives.MULTIPLY, [1073741823, 2])
+    prim_fails(primitives.MULTIPLY, [1073741823, 1073741823])
+    prim_fails(primitives.MULTIPLY, [1073741823, -4])
+    prim_fails(primitives.MULTIPLY, [-1073741823, 2])
+    
 def test_small_int_divide():
     assert prim(primitives.DIVIDE, [6,3]).value == 2
     
@@ -164,7 +173,6 @@
     assert prim(primitives.FLOAT_TRUNCATED, [4.5]).value == 4
     assert prim(primitives.FLOAT_TRUNCATED, [4.6]).value == 4
 
-
 def test_at():
     w_obj = mockclass(0, varsized=True).as_class_get_shadow().new(1)
     w_obj.store(0, "foo")
@@ -241,6 +249,10 @@
     w_v = prim(primitives.INST_VAR_AT, ["abc", 1])
     assert w_v.value == ord("b")
 
+def test_class():
+    assert prim(primitives.CLASS, ["string"]) == classtable.w_String
+    assert prim(primitives.CLASS, [1]) == classtable.w_SmallInteger
+
 def test_as_oop():
     py.test.skip("not yet clear what AS_OOP returns: hash or header?")
     w_obj = mockclass(0).as_class_get_shadow().new()
@@ -359,3 +371,8 @@
 	
     	self should: [1 become: 2] raise: Error.
     """
+
+# Note:
+#   primitives.PRIMITIVE_BLOCK_COPY is tested in test_interpreter
+#   primitives.PRIMITIVE_VALUE is tested in test_interpreter
+#   primitives.PRIMITIVE_VALUE_WITH_ARGS is tested in test_interpreter



More information about the Pypy-commit mailing list