[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