[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