Torsten Rüger
d1f8733623
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
97 lines
2.8 KiB
Ruby
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
|