compiler test back up

This commit is contained in:
Torsten Ruger
2015-09-20 17:33:05 +03:00
parent 5f628744d6
commit b1cab4f395
9 changed files with 88 additions and 73 deletions

View File

@ -46,8 +46,8 @@ class TestBasic < MiniTest::Test
check
end
def test_instance_variable
@string_input = '@foo_bar '
def ttest_field
@string_input = 'self.foo_bar '
@output = "- Virtual::Return(:type => Virtual::Unknown)"
check
end

View File

@ -2,28 +2,28 @@ require_relative "compiler_helper"
class CompilerTest < MiniTest::Test
include AST::Sexp
def setup
Virtual.machine.boot
end
def check
res = Bosl::Compiler.compile( @expression , Virtual.machine.space.get_main )
assert res.is_a?(Virtual::Slot) , "compiler must compile to slot, not #{res.class}"
assert res.is_a?(Virtual::Slot) , "compiler must compile to slot, not #{res.inspect}"
end
def true_ex
Ast::TrueExpression.new
end
def name_ex
Ast::NameExpression.new("name#{rand(100)}")
end
def list
[true_ex]
end
def test_if_expression
@expression = Ast::IfExpression.new( true_ex , list , list)
def ttest_if_expression
#TODO review constant : all expressions return a slot
@expression = s(:if,
s(:condition,
s(:int, 0)),
s(:if_true,
s(:int, 42)),
s(:if_false, nil))
check
end
def test_function_expression
@expression = Ast::FunctionExpression.new( "name", [] , [true_ex] ,nil)
@expression = s(:function, :int, s(:name, :foo),
s(:parameters, s(:parameter, :ref, :x)),
s(:expressions, s(:int, 5)))
check
end
end

View File

@ -20,8 +20,8 @@ module Virtual
def test_module
@string_input = <<HERE
class Some
def foo()
5
int foo()
return 5
end
end
HERE
@ -31,39 +31,40 @@ HERE
def test_simplest_function
@string_input = <<HERE
def foo(x)
5
int foo(int x)
return x
end
HERE
@output = [[MethodEnter] ,[MethodReturn]]
check
end
def ttest_second_simplest_function
def test_second_simplest_function
@string_input = <<HERE
def foo(x)
x
ref foo(ref x)
return x
end
HERE
@output = [[1,2,3,4],[],[],[]]
@output = [[Virtual::MethodEnter],[Virtual::MethodReturn]]
check
end
def ttest_puts_string
def test_puts_string
@string_input = <<HERE
def foo()
int foo()
puts("Hello")
end
foo()
HERE
@output = nil
@output = [[Virtual::MethodEnter , Virtual::NewMessage, Virtual::Set, Virtual::Set, Virtual::MessageSend],
[Virtual::MethodReturn]]
check
end
def ttest_class_function
@string_input = <<HERE
def String.length(x)
@length
int self.length(int x)
self.length
end
HERE
@output = nil
@ -81,7 +82,7 @@ HERE
check
end
def test_function_ops_simple
def ttest_function_ops_simple
@string_input = <<HERE
def foo()
2 + 5
@ -91,7 +92,8 @@ HERE
check
end
def test_ops_simple
def ttest_ops_simple
#TODO ops still botched
@string_input = <<HERE
2 + 5
HERE
@ -116,7 +118,7 @@ HERE
def test_while
@string_input = <<HERE
while(1) do
while(1)
3
end
HERE