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
78 lines
2.0 KiB
Ruby
78 lines
2.0 KiB
Ruby
require_relative "helper"
|
|
|
|
module Ruby
|
|
class TestClassStatementVool < MiniTest::Test
|
|
include RubyTests
|
|
|
|
def setup
|
|
input = "class Tryout < Base;def meth; a = 5 ;end; end"
|
|
@vool = compile( input ).to_vool
|
|
end
|
|
def test_class
|
|
assert_equal Vool::ClassExpression , @vool.class
|
|
end
|
|
def test_body
|
|
assert_equal Vool::Statements , @vool.body.class
|
|
end
|
|
def test_compile_class_name
|
|
assert_equal :Tryout , @vool.name
|
|
end
|
|
def test_compile_class_super
|
|
assert_equal :Base , @vool.super_class_name
|
|
end
|
|
|
|
end
|
|
class TestEmptyClassStatement < MiniTest::Test
|
|
include RubyTests
|
|
|
|
def setup
|
|
input = "class Tryout < Base;end"
|
|
@lst = compile( input )
|
|
end
|
|
|
|
def test_compile_class
|
|
assert_equal ClassStatement , @lst.class
|
|
end
|
|
def test_compile_class_name
|
|
assert_equal :Tryout , @lst.name
|
|
end
|
|
def test_compile_class_super
|
|
assert_equal :Base , @lst.super_class_name
|
|
end
|
|
def test_compile_class_body
|
|
assert @lst.body.empty?
|
|
end
|
|
|
|
end
|
|
class TestBasicClassStatement < MiniTest::Test
|
|
include ScopeHelper
|
|
include RubyTests
|
|
|
|
def test_compile_one_method
|
|
lst = compile( as_test_main("@ivar = 4") )
|
|
assert_equal IvarAssignment , lst.body.first.body.class
|
|
end
|
|
def test_compile_two_stats
|
|
lst = compile( as_test_main("false; true;") )
|
|
assert_equal ScopeStatement , lst.body.first.body.class
|
|
assert_equal TrueConstant , lst.body.first.body.statements[1].class
|
|
end
|
|
end
|
|
class TestClassStatementTransformFail < MiniTest::Test
|
|
include RubyTests
|
|
|
|
def test_if
|
|
input = "class Tryout < Base; false if(true) ; end"
|
|
assert_raises_muted { compile( input ).to_vool}
|
|
end
|
|
def test_instance
|
|
input = "class Tryout < Base; @var = 5 ; end"
|
|
assert_raises_muted { compile( input ).to_vool}
|
|
end
|
|
def test_wrong_send
|
|
input = "class Tryout < Base; hi() ; end"
|
|
assert_raises_muted { compile( input ).to_vool}
|
|
end
|
|
end
|
|
end
|