[pypy-svn] r44451 - in pypy/dist/pypy/lang/scheme: . test
jlg at codespeak.net
jlg at codespeak.net
Sat Jun 23 00:12:10 CEST 2007
Author: jlg
Date: Sat Jun 23 00:12:09 2007
New Revision: 44451
Added:
pypy/dist/pypy/lang/scheme/operation.py (contents, props changed)
Modified:
pypy/dist/pypy/lang/scheme/test/test_object.py
pypy/dist/pypy/lang/scheme/test/test_parser.py
Log:
added operation.py + new tests in test_object.py
Added: pypy/dist/pypy/lang/scheme/operation.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/lang/scheme/operation.py Sat Jun 23 00:12:09 2007
@@ -0,0 +1,18 @@
+import autopath
+from pypy.lang.scheme.object import *
+
+def mul(ctx, args_lst):
+ acc = 1
+ for arg in args_lst:
+ acc *= arg.to_number()
+
+ return W_Fixnum(acc)
+
+def add(ctx, args_lst):
+ acc = 0
+ for arg in args_lst:
+ acc += arg.to_number()
+
+ return W_Fixnum(acc)
+
+
Modified: pypy/dist/pypy/lang/scheme/test/test_object.py
==============================================================================
--- pypy/dist/pypy/lang/scheme/test/test_object.py (original)
+++ pypy/dist/pypy/lang/scheme/test/test_object.py Sat Jun 23 00:12:09 2007
@@ -1,4 +1,6 @@
+import py
from pypy.lang.scheme.object import *
+from pypy.lang.scheme.operation import *
def test_false():
w_false = W_Boolean(False)
@@ -43,3 +45,26 @@
w_num = W_Pair(W_Symbol("+"),
W_Pair(W_Fixnum(4), W_Pair(W_Fixnum(5), W_Nil())))
assert w_num.eval(None).to_number() == 20
+
+def test_operations_simple():
+ py.test.skip("in progress")
+ w_num1 = W_Fixnum(4)
+ w_num2 = W_Fixnum(5)
+ w_num3 = W_Float(6.1)
+
+ w_num = mul(None, [w_num1])
+ assert w_num.to_number() == w_num1.to_number()
+ w_num = mul(None, [w_num1, w_num2])
+ assert w_num.to_number() == w_num1.to_number() * w_num2.to_number()
+ w_num = mul(None, [w_num1, w_num2, w_num3])
+ assert w_num.to_number() == (w_num2.to_number() * w_num2.to_number()
+ * w_num3.to_number())
+
+ w_num = add(None, [w_num1])
+ assert w_num.to_number() == w_num1.to_number()
+ w_num = add(None, [w_num1, w_num2])
+ assert w_num.to_number() == w_num1.to_number() + w_num2.to_number()
+ w_num = add(None, [w_num1, w_num2, w_num3])
+ assert w_num.to_number() == (w_num2.to_number() + w_num2.to_number()
+ + w_num3.to_number())
+
Modified: pypy/dist/pypy/lang/scheme/test/test_parser.py
==============================================================================
--- pypy/dist/pypy/lang/scheme/test/test_parser.py (original)
+++ pypy/dist/pypy/lang/scheme/test/test_parser.py Sat Jun 23 00:12:09 2007
@@ -1,3 +1,4 @@
+import py
from pypy.lang.scheme.ssparser import parse
from pypy.lang.scheme.astbuilder import ASTBuilder
from pypy.rlib.parsing.parsing import Symbol, Nonterminal
@@ -43,6 +44,8 @@
# evaluate with no context
return ast.eval(None)
-def test_eval_obj():
+def test_eval_simple():
+ py.test.skip("in progress")
w_num = eval_expr(r'''1''')
assert w_num.to_number() == 1
+
More information about the Pypy-commit
mailing list