rubyx/test/ruby/test_class_method_statement.rb
Torsten Rüger d1f8733623 Rename Vool to Sol
Simple is really the descriptive name for the layer
Sure, it is "virtual" but that is not as important as the fact that it is simple (or simplified)
Also objct (based really) is better, since orientated implies it is a little like that, but only orientated, not really it. Sol only has objects, nothing else
Just cause i was renaming anyway
2019-10-04 00:38:47 +03:00

97 lines
2.8 KiB
Ruby

require_relative "helper"
module Ruby
class TestClassMethodStatement < MiniTest::Test
include RubyTests
def test_basic_method
input = "def self.tryout() ; return true ; end "
@lst = compile( input )
assert_equal Ruby::ClassMethodStatement , @lst.class
end
def test_method_arg
input = "def self.tryout(arg) ; arg = true ; return arg ; end "
@lst = compile( input )
assert_equal Ruby::ClassMethodStatement , @lst.class
end
def test_tos
input = "def self.tryout(arg) ; arg = true ; return arg ; end "
@str = compile( input ).to_s
assert @str.include?("def self.tryou"), @str
assert @str.include?("arg = true"), @str
end
end
class TestClassMethodStatement2 < MiniTest::Test
include RubyTests
def test_body_is_scope_one_statement
input = "def self.tryout(arg1, arg2) ; a = true ; end "
lst = compile( input )
assert_equal LocalAssignment , lst.body.class
end
def test_body_is_scope_zero_statement
input = "def self.tryout(arg1, arg2) ; arg1 = arg2 ; end "
lst = compile( input )
assert_equal LocalAssignment , lst.body.class
end
end
class TestClassMethodStatementTrans < MiniTest::Test
include RubyTests
def setup()
input = "def self.tryout(arg1, arg2) ; a = arg1 ; end "
@lst = compile( input ).to_sol
end
def test_method
assert_equal Sol::ClassMethodExpression , @lst.class
end
def test_method_args
assert_equal [:arg1, :arg2] , @lst.args
end
def test_body_is_scope_zero_statement
assert_equal Sol::Statements , @lst.body.class
end
def test_body_is_scope_zero_statement
assert_equal Sol::LocalAssignment , @lst.body.first.class
end
end
class TestClassMethodStatementImplicitReturn < MiniTest::Test
include RubyTests
def setup()
input = "def self.tryout(arg1, arg2) ; arg1 ; end "
@lst = compile( input ).to_sol
end
def test_method
assert_equal Sol::ClassMethodExpression , @lst.class
end
def test_method_args
assert_equal [:arg1, :arg2] , @lst.args
end
def test_body_is_scope_zero_statement
assert_equal Sol::ReturnStatement , @lst.body.class
end
end
class TestClassMethodStatement < MiniTest::Test
include RubyTests
def setup()
input = "def self.tryout(arg1, arg2) ; true ; false ; end "
@lst = compile( input )
end
def test_method
assert_equal ClassMethodStatement , @lst.class
end
def test_method_name
assert_equal :tryout , @lst.name
end
def test_method_args
assert_equal [:arg1, :arg2] , @lst.args
end
def test_basic_body
assert_equal ScopeStatement , @lst.body.class
assert_equal 2 , @lst.body.length
end
end
end