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
118 lines
3.0 KiB
Ruby
118 lines
3.0 KiB
Ruby
require_relative "helper"
|
|
|
|
module Ruby
|
|
class TestSendNoArgSol < MiniTest::Test
|
|
include RubyTests
|
|
def setup
|
|
@lst = compile( "foo").to_sol
|
|
end
|
|
def test_simple_class
|
|
assert_equal Sol::SendStatement , @lst.class
|
|
end
|
|
def test_simple_name
|
|
assert_equal :foo , @lst.name
|
|
end
|
|
def test_simple_receiver
|
|
assert_equal Sol::SelfExpression , @lst.receiver.class
|
|
end
|
|
def test_simple_args
|
|
assert_equal [] , @lst.arguments
|
|
end
|
|
end
|
|
class TestSendSimpleArgSol < MiniTest::Test
|
|
include RubyTests
|
|
def setup
|
|
@lst = compile( "bar(1)").to_sol
|
|
end
|
|
def test_class
|
|
assert_equal Sol::SendStatement , @lst.class
|
|
end
|
|
def test_name
|
|
assert_equal :bar , @lst.name
|
|
end
|
|
def test_receiver
|
|
assert_equal Sol::SelfExpression , @lst.receiver.class
|
|
end
|
|
def test_args
|
|
assert_equal Sol::IntegerConstant , @lst.arguments.first.class
|
|
end
|
|
end
|
|
class TestSendSuperSol < MiniTest::Test
|
|
include RubyTests
|
|
def test_super0
|
|
lst = compile( "super").to_sol
|
|
assert_equal Sol::SuperStatement , lst.class
|
|
end
|
|
def test_super0_receiver
|
|
lst = compile( "super").to_sol
|
|
assert_equal Sol::SelfExpression , lst.receiver.class
|
|
end
|
|
end
|
|
class TestSendSuperArgsSol < MiniTest::Test
|
|
include RubyTests
|
|
def setup
|
|
@lst = compile( "super(1)").to_sol
|
|
end
|
|
def test_super_class
|
|
assert_equal Sol::SuperStatement , @lst.class
|
|
end
|
|
def test_super_receiver
|
|
assert_equal Sol::SelfExpression , @lst.receiver.class
|
|
end
|
|
def test_super_name
|
|
assert_equal :super, @lst.name
|
|
end
|
|
end
|
|
class TestSendReceiverTypeSol < MiniTest::Test
|
|
include RubyTests
|
|
|
|
def setup
|
|
Parfait.boot!(Parfait.default_test_options)
|
|
end
|
|
|
|
def test_int_receiver
|
|
sent = compile( "5.div4").to_sol
|
|
assert_equal Parfait::Type , sent.receiver.ct_type.class
|
|
assert_equal "Integer_Type" , sent.receiver.ct_type.name
|
|
end
|
|
def test_string_receiver
|
|
sent = compile( "'5'.putstring").to_sol
|
|
assert_equal Parfait::Type , sent.receiver.ct_type.class
|
|
assert_equal "Word_Type" , sent.receiver.ct_type.name
|
|
end
|
|
end
|
|
class TestSendReceiver < MiniTest::Test
|
|
include RubyTests
|
|
def setup
|
|
@lst = compile( "call.once.more").to_sol
|
|
end
|
|
def test_class
|
|
assert_equal Sol::Statements , @lst.class
|
|
end
|
|
def test_one
|
|
assert_equal Sol::LocalAssignment , @lst.first.class
|
|
end
|
|
def test_one_name
|
|
assert @lst[0].name.to_s.start_with?("tmp_")
|
|
end
|
|
def test_one_value
|
|
assert_equal :call , @lst[0].value.name
|
|
end
|
|
def test_two_name
|
|
assert @lst[1].name.to_s.start_with?("tmp_")
|
|
end
|
|
def test_two_value
|
|
assert_equal :once , @lst[1].value.name
|
|
end
|
|
def test_three_class
|
|
assert_equal Sol::SendStatement, @lst[2].class
|
|
end
|
|
def test_three_name
|
|
assert_equal :more , @lst[2].name
|
|
end
|
|
def test_three_self
|
|
assert @lst[2].receiver.name.to_s.start_with?("tmp_")
|
|
end
|
|
end
|
|
end
|