Torsten Rüger
84b9811e55
When send has complex args, mostly more sends, we hoist those out and pass created temporary variables
71 lines
2.2 KiB
Ruby
71 lines
2.2 KiB
Ruby
require_relative "helper"
|
|
|
|
module Ruby
|
|
module LastBar
|
|
include RubyTests
|
|
def test_last_class
|
|
assert_equal Vool::SendStatement , @lst.last.class
|
|
end
|
|
def test_last_name
|
|
assert_equal :last , @lst.last.name
|
|
end
|
|
def test_last_arg
|
|
assert_equal Vool::LocalVariable , @lst.last.arguments.first.class
|
|
end
|
|
def test_lst_class
|
|
assert_equal Vool::Statements , @lst.class
|
|
end
|
|
def test_lst_no_statements
|
|
@lst.statements.each{|st| assert( ! st.is_a?(Vool::Statements) , st.class)}
|
|
end
|
|
end
|
|
class TestSendSendArgVool < MiniTest::Test
|
|
include LastBar
|
|
def setup
|
|
@lst = compile( "last(foo(1))").to_vool
|
|
end
|
|
def test_classes
|
|
assert_equal Vool::Statements , @lst.class
|
|
assert_equal Vool::LocalAssignment , @lst.first.class
|
|
assert_equal Vool::SendStatement , @lst.last.class
|
|
end
|
|
def test_foo1
|
|
assert_equal Vool::SendStatement , @lst.first.value.class
|
|
assert_equal :foo , @lst.first.value.name
|
|
assert_equal Vool::IntegerConstant , @lst.first.value.arguments.first.class
|
|
end
|
|
end
|
|
class Test3SendVool < MiniTest::Test
|
|
include LastBar
|
|
def setup
|
|
@lst = compile( "last(foo(more(1)))").to_vool
|
|
end
|
|
def test_classes
|
|
assert_equal Vool::Statements , @lst.class
|
|
assert_equal Vool::LocalAssignment , @lst.first.class
|
|
assert_equal Vool::SendStatement , @lst.last.class
|
|
end
|
|
def test_foo
|
|
assert_equal Vool::SendStatement , @lst.first.value.class
|
|
assert_equal :more , @lst.first.value.name
|
|
assert_equal Vool::IntegerConstant , @lst.first.value.arguments.first.class
|
|
end
|
|
end
|
|
class Test5SendVool < MiniTest::Test
|
|
include LastBar
|
|
def setup
|
|
@lst = compile( "last(foo(more(even_more(1),and_more(with_more))))").to_vool
|
|
end
|
|
def test_classes
|
|
assert_equal Vool::Statements , @lst.class
|
|
assert_equal Vool::LocalAssignment , @lst.first.class
|
|
assert_equal Vool::SendStatement , @lst.last.class
|
|
end
|
|
def test_foo
|
|
assert_equal Vool::SendStatement , @lst.first.value.class
|
|
assert_equal :even_more , @lst.first.value.name
|
|
assert_equal Vool::IntegerConstant , @lst.first.value.arguments.first.class
|
|
end
|
|
end
|
|
end
|