change test framework to use files for in and out (s-exp)

This commit is contained in:
Torsten Ruger
2015-09-18 21:55:02 +03:00
parent 396a843a5e
commit 22e3c59674
80 changed files with 946 additions and 13 deletions

View File

@ -0,0 +1,11 @@
class FooBo
Bar.call(35)
end
-- -- --
s(:list, [s(:class, "FooBo", nil, [s(:call,
s(:name, "call"),
s(:arguments,
s(:int, 35)),
s(:receiver,
s(:module, "Bar")))])])

View File

@ -0,0 +1,17 @@
int foo(ref x)
a = 5
end
foo( 3 )
-- -- --
s(:list, [s(:function, :int,
s(:name, "foo"),
s(:parameters,
s(:field, :ref, :x)),
s(:expressions,
s(:assign,
s(:name, "a"),
s(:int, 5)))), s(:call,
s(:name, "foo"),
s(:arguments,
s(:int, 3)))])

54
test/cases/root/fibo1.tst Normal file
View File

@ -0,0 +1,54 @@
int fibonaccit(int n)
a = 0
b = 1
while( n > 1 )
tmp = a
a = b
b = tmp + b
puts(b)
n = n - 1
end
end
fibonaccit( 10 )
-- -- --
s(:list, [s(:function, :int,
s(:name, "fibonaccit"),
s(:parameters,
s(:field, :int, :n)),
s(:expressions,
s(:assign,
s(:name, "a"),
s(:int, 0)),
s(:assign,
s(:name, "b"),
s(:int, 1)),
s(:while,
s(:condition,
s(:operator, ">",
s(:name, "n"),
s(:int, 1))),
s(:expressions,
s(:assign,
s(:name, "tmp"),
s(:name, "a")),
s(:assign,
s(:name, "a"),
s(:name, "b")),
s(:assign,
s(:name, "b"),
s(:operator, "+",
s(:name, "tmp"),
s(:name, "b"))),
s(:call,
s(:name, "puts"),
s(:arguments,
s(:name, "b"))),
s(:assign,
s(:name, "n"),
s(:operator, "-",
s(:name, "n"),
s(:int, 1))))))), s(:call,
s(:name, "fibonaccit"),
s(:arguments,
s(:int, 10)))])

View File

@ -0,0 +1,16 @@
module Fibo
a = 5 + foo
bar( b , a , r)
end
-- -- --
s(:list, [s(:module, "Fibo", [s(:assign,
s(:name, "a"),
s(:operator, "+",
s(:int, 5),
s(:name, "foo"))), s(:call,
s(:name, "bar"),
s(:arguments,
s(:name, "b"),
s(:name, "a"),
s(:name, "r")))])])

View File

@ -0,0 +1,24 @@
module Fibo
int fibonaccit(int n)
int a = 0
return a
end
fibonaccit( 10 )
end
-- -- --
s(:list, [s(:module, "Fibo", [s(:function, :int,
s(:name, "fibonaccit"),
s(:parameters,
s(:field, :int, :n)),
s(:expressions,
s(:name, "int"),
s(:assign,
s(:name, "a"),
s(:int, 0)),
s(:return,
s(:name, "a")))), s(:call,
s(:name, "fibonaccit"),
s(:arguments,
s(:int, 10)))])])

View File

@ -0,0 +1,12 @@
module FooBo
class Bar
a = 5 + foo
end
end
-- -- --
s(:list, [s(:module, "FooBo", [s(:class, "Bar", nil, [s(:assign,
s(:name, "a"),
s(:operator, "+",
s(:int, 5),
s(:name, "foo")))])])])