SA for Slotted derivations

Object and Constant similarity are coming more into focus. Will unite after the merge
This commit is contained in:
2020-02-29 17:19:53 +02:00
parent d22da1ab97
commit 088017bc05
6 changed files with 59 additions and 33 deletions

View File

@ -14,7 +14,7 @@ module SlotMachine
assert_equal Risc::LoadConstant , @instruction.class
end
def test_def_register
assert_equal :r1 , @instruction.register.symbol
assert @instruction.register.is_object?
end
def test_def_const
assert_equal "hi" , @instruction.constant.to_string
@ -32,7 +32,7 @@ module SlotMachine
assert_equal Risc::LoadConstant , @instruction.class
end
def test_def_register
assert_equal :r1 , @instruction.register.symbol
assert @instruction.register.is_object?
end
def test_def_const
assert_equal "hi" , @instruction.constant.to_string
@ -41,7 +41,7 @@ module SlotMachine
assert_equal "StringConstant.type" , @slotted.to_s
end
def test_def_register2
assert_equal :r1 , @instruction.next.register.symbol
assert @instruction.next.register.is_object?
end
def test_def_next_index
assert_equal 0 , @instruction.next.index

View File

@ -16,10 +16,10 @@ module SlotMachine
assert_equal NilClass , @instruction.next.class
end
def test_def_array #from message r0
assert_equal :r0 , @instruction.array.symbol
assert_equal :message , @instruction.array.symbol
end
def test_def_register # to next free register r1
assert_equal :r2 , @register.symbol
assert_equal :"message.caller" , @register.symbol
end
def test_def_index # at caller index 6
assert_equal 6 , @instruction.index

View File

@ -14,7 +14,7 @@ module SlotMachine
assert_equal Risc::LoadConstant , @instruction.class
end
def test_def_register
assert_equal :r1 , @instruction.register.symbol
assert @instruction.register.is_object?
end
def test_def_const
assert_equal Parfait::Space , @instruction.constant.class
@ -23,10 +23,42 @@ module SlotMachine
assert_equal "Space.type" , @slotted.to_s
end
def test_def_register2
assert_equal :r1 , @instruction.next.register.symbol
reg = @instruction.next.register
assert reg.is_object?
assert reg.symbol.to_s.index(".") , reg.symbol.to_s
end
def test_def_next_index
assert_equal 0 , @instruction.next.index
end
end
class TestSlottedObjectType2 < MiniTest::Test
def setup
Parfait.boot!(Parfait.default_test_options)
compiler = Risc.test_compiler
@slotted = Slotted.for(Parfait.object_space , [:type , :type])
register = @slotted.to_register(compiler , InstructionMock.new)
@instruction = compiler.risc_instructions.next
end
def test_def_register2
reg = @instruction.next.register
assert reg.is_object?
assert_equal "type", reg.symbol.to_s.split(".").last
assert_equal 2, reg.symbol.to_s.split(".").length
end
end
class TestSlottedObjectType3 < MiniTest::Test
def setup
Parfait.boot!(Parfait.default_test_options)
compiler = Risc.test_compiler
@slotted = Slotted.for(Parfait.object_space , [:type , :type , :type])
register = @slotted.to_register(compiler , InstructionMock.new)
@instruction = compiler.risc_instructions.next
end
def test_def_register3
reg = @instruction.next.next.register
assert reg.is_object?
assert_equal "type", reg.symbol.to_s.split(".").last
assert_equal 3, reg.symbol.to_s.split(".").length
end
end
end