compiler test back up
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user