Torsten Rüger
f87526f86f
Class, Method and Lambda (was block) are expressions. Just making things clearer, especially for the blocks (ahem, lambdas) is matters. wip
92 lines
2.5 KiB
Ruby
92 lines
2.5 KiB
Ruby
require_relative "helper"
|
|
|
|
module Ruby
|
|
class TestVariables < MiniTest::Test
|
|
include RubyTests
|
|
|
|
# "free standing" local can not be tested as it will result in send
|
|
# in other words there is no way of knowing if a name is variable or method
|
|
# one needs an assignemnt first, to "tell" the parser it's a local
|
|
def test_local_basic
|
|
lst = compile( "foo = 1 ; foo")
|
|
assert_equal ScopeStatement , lst.class
|
|
assert_equal LocalVariable , lst.statements[1].class
|
|
end
|
|
|
|
def test_local_nane
|
|
lst = compile( "foo = 1 ; foo")
|
|
assert_equal LocalVariable , lst.statements[1].class
|
|
end
|
|
|
|
def test_instance_basic
|
|
lst = compile( "@var" )
|
|
assert_equal InstanceVariable , lst.class
|
|
assert_equal :var , lst.name
|
|
end
|
|
|
|
def test_instance_return
|
|
lst = compile( "return @var" )
|
|
assert_equal InstanceVariable , lst.return_value.class
|
|
end
|
|
|
|
def test_class_basic
|
|
lst = compile( "@@var" )
|
|
assert_equal ClassVariable , lst.class
|
|
assert_equal :var , lst.name
|
|
end
|
|
|
|
def test_class_return
|
|
lst = compile( "return @@var" )
|
|
assert_equal ClassVariable , lst.return_value.class
|
|
end
|
|
|
|
def test_module_basic
|
|
lst = compile( "Module" )
|
|
assert_equal ModuleName , lst.class
|
|
assert_equal :Module , lst.name
|
|
end
|
|
|
|
def test_module_base_scoped
|
|
lst = compile( "::Module" )
|
|
assert_equal ModuleName , lst.class
|
|
assert_equal :Module , lst.name
|
|
end
|
|
end
|
|
class TestVariablesVool < MiniTest::Test
|
|
include RubyTests
|
|
def test_local_basic
|
|
lst = compile( "foo = 1 ; return foo").to_vool
|
|
assert_equal Vool::LocalVariable , lst.statements[1].return_value.class
|
|
end
|
|
|
|
def test_instance_basic
|
|
lst = compile( "@var" ).to_vool
|
|
assert_equal Vool::InstanceVariable , lst.class
|
|
assert_equal :var , lst.name
|
|
end
|
|
|
|
def test_instance_return
|
|
lst = compile( "return @var" ).to_vool
|
|
assert_equal Vool::InstanceVariable , lst.return_value.class
|
|
end
|
|
|
|
def test_class_basic
|
|
lst = compile( "@@var" ).to_vool
|
|
assert_equal Vool::ClassVariable , lst.class
|
|
assert_equal :var , lst.name
|
|
end
|
|
|
|
def test_class_return
|
|
lst = compile( "return @@var" ).to_vool
|
|
assert_equal Vool::ClassVariable , lst.return_value.class
|
|
end
|
|
|
|
def test_module_basic
|
|
lst = compile( "Module" ).to_vool
|
|
assert_equal Vool::ModuleName , lst.class
|
|
assert_equal :Module , lst.name
|
|
end
|
|
|
|
end
|
|
end
|