update parfait message according to boot

most of the attributes are not used at compile time ,
so they did not get updated. But the compiler uses the attribute
names (which are correct as they are set in boot), so it’s nice
to actually see them in ruby too.
This commit is contained in:
Torsten Ruger 2017-04-14 11:13:47 +03:00
parent c885888f4a
commit 21b436c476
2 changed files with 45 additions and 23 deletions

View File

@ -10,8 +10,14 @@
module Parfait
class Message < Object
attr_reader :locals , :receiver , :return_value , :name
# :next_message => :Message, :receiver => :Object, :locals => :NamedList ,
# :return_address => :Integer, :return_value => :Integer,
# :caller => :Message , :name => :Word , :arguments => :NamedList
attr_accessor :next_message
attr_reader :receiver , :locals
attr_reader :return_address, :return_value
attr_reader :caller , :name , :arguments
def initialize next_m
@next_message = next_m

View File

@ -1,27 +1,43 @@
require_relative "../helper"
class TestMessage < MiniTest::Test
module Parfait
class TestMessage < MiniTest::Test
def setup
Risc.machine.boot
@space = Parfait.object_space
@mess = @space.first_message
end
def test_length
assert_equal 9 , @mess.get_type.instance_length , @mess.get_type.inspect
end
def test_attribute_set
@mess.set_receiver( 55)
assert_equal 55 , @mess.receiver
end
def test_indexed
assert_equal 9 , @mess.get_type.variable_index(:arguments)
end
def test_next
assert @mess.next_message
def setup
Risc.machine.boot
@space = Parfait.object_space
@mess = @space.first_message
end
def test_length
assert_equal 9 , @mess.get_type.instance_length , @mess.get_type.inspect
end
def test_attribute_set
@mess.set_receiver( 55)
assert_equal 55 , @mess.receiver
end
def test_indexed
assert_equal 9 , @mess.get_type.variable_index(:arguments)
end
def test_next_message
assert_equal Message , @mess.next_message.class
end
def test_locals
assert_equal NamedList , @mess.locals.class
end
def test_arguments
assert_equal NamedList , @mess.arguments.class
end
def test_return_address
assert_nil @mess.return_address
end
def test_return_value
assert_nil @mess.return_value
end
def test_caller
assert_nil @mess.caller
end
def test_name
assert_nil @mess.name
end
end
end