example programs tests
This commit is contained in:
20
examples/fibonacci.simple
Normal file
20
examples/fibonacci.simple
Normal file
@ -0,0 +1,20 @@
|
||||
def fibonacci_rec(n):
|
||||
if n <= 1:
|
||||
n
|
||||
else:
|
||||
fibonacci_rec(n - 1) + fibonacci_rec(n - 2)
|
||||
|
||||
|
||||
def fibonacci_it(n):
|
||||
if n <= 1:
|
||||
n
|
||||
else:
|
||||
fib = 1
|
||||
prev = 1
|
||||
i = 2
|
||||
while i < n:
|
||||
temp = fib
|
||||
fib = fib + prev
|
||||
prev = temp
|
||||
i++
|
||||
fib
|
13
examples/inheritance.simple
Normal file
13
examples/inheritance.simple
Normal file
@ -0,0 +1,13 @@
|
||||
object shape:
|
||||
size = 1
|
||||
|
||||
def area:
|
||||
size
|
||||
|
||||
object square(parent=shape):
|
||||
def area:
|
||||
size * size
|
||||
|
||||
object circle(parent=shape):
|
||||
def area:
|
||||
3.1415 * size * size
|
57
mytests/test_general.py
Normal file
57
mytests/test_general.py
Normal file
@ -0,0 +1,57 @@
|
||||
from bytecodeinterpreter import Interpreter
|
||||
from simpleparser import parse
|
||||
|
||||
|
||||
def eval_test_program(name):
|
||||
import os
|
||||
program = os.path.join(os.path.dirname(__file__),
|
||||
"..",
|
||||
"examples",
|
||||
name + ".simple")
|
||||
|
||||
with open(program, "r") as f:
|
||||
ast = parse(f.read())
|
||||
interpreter = Interpreter()
|
||||
w_model = interpreter.make_module()
|
||||
interpreter.eval(ast, w_model)
|
||||
|
||||
return w_model, interpreter
|
||||
|
||||
|
||||
def test_fibonacci_rec():
|
||||
w_model, interpreter = eval_test_program("fibonacci")
|
||||
|
||||
ast = parse("""
|
||||
x = fibonacci_rec(5)
|
||||
y = fibonacci_rec(10)
|
||||
""")
|
||||
interpreter.eval(ast, w_model)
|
||||
|
||||
assert w_model.getvalue("x").value == 5
|
||||
assert w_model.getvalue("y").value == 55
|
||||
|
||||
ast = parse("""
|
||||
x = fibonacci_it(5)
|
||||
y = fibonacci_it(10)
|
||||
""")
|
||||
interpreter.eval(ast, w_model)
|
||||
|
||||
assert w_model.getvalue("x").value == 5
|
||||
assert w_model.getvalue("y").value == 55
|
||||
|
||||
|
||||
def test_inheritance():
|
||||
w_model, interpreter = eval_test_program("inheritance")
|
||||
|
||||
ast = parse("""
|
||||
x = square
|
||||
x size = 5
|
||||
xa = x area
|
||||
|
||||
y = circle
|
||||
ya = y area
|
||||
""")
|
||||
interpreter.eval(ast, w_model)
|
||||
|
||||
assert w_model.getvalue("xa").value == 25
|
||||
assert w_model.getvalue("ya").value == 3.1415
|
Reference in New Issue
Block a user