rename
This commit is contained in:
57
test/vool/ruby_compiler/test_variables.rb
Normal file
57
test/vool/ruby_compiler/test_variables.rb
Normal file
@ -0,0 +1,57 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Vool
|
||||
class TestVariables < MiniTest::Test
|
||||
|
||||
# "free standing" local can not be tested as it will result in send
|
||||
# in other words ther 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 = RubyCompiler.compile( "foo = 1 ; foo")
|
||||
assert_equal ScopeStatement , lst.class
|
||||
assert_equal LocalVariable , lst.statements[1].class
|
||||
end
|
||||
|
||||
def test_local_nane
|
||||
lst = RubyCompiler.compile( "foo = 1 ; foo")
|
||||
assert_equal LocalVariable , lst.statements[1].class
|
||||
end
|
||||
|
||||
def test_instance_basic
|
||||
lst = RubyCompiler.compile( "@var" )
|
||||
assert_equal InstanceVariable , lst.class
|
||||
assert_equal :var , lst.name
|
||||
end
|
||||
|
||||
def test_instance_return
|
||||
lst = RubyCompiler.compile( "return @var" )
|
||||
assert_equal InstanceVariable , lst.return_value.class
|
||||
end
|
||||
|
||||
def test_class_basic
|
||||
lst = RubyCompiler.compile( "@@var" )
|
||||
assert_equal ClassVariable , lst.class
|
||||
assert_equal :var , lst.name
|
||||
end
|
||||
|
||||
def test_class_return
|
||||
lst = RubyCompiler.compile( "return @@var" )
|
||||
assert_equal ClassVariable , lst.return_value.class
|
||||
end
|
||||
|
||||
def test_module_basic
|
||||
lst = RubyCompiler.compile( "Module" )
|
||||
assert_equal ModuleName , lst.class
|
||||
assert_equal :Module , lst.name
|
||||
end
|
||||
|
||||
def test_module_base_scoped
|
||||
lst = RubyCompiler.compile( "::Module" )
|
||||
assert_equal ModuleName , lst.class
|
||||
assert_equal :Module , lst.name
|
||||
end
|
||||
def test_module_module_scoped
|
||||
assert_raises {RubyCompiler.compile( "M::Module" ) }
|
||||
end
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user