Torsten Rüger
3c762c4fe7
And the derived XXDefinitions to XXSlot Just to be more consistent And possibly free the Definition for the Language side
54 lines
1.6 KiB
Ruby
54 lines
1.6 KiB
Ruby
require_relative "helper"
|
|
|
|
module SlotMachine
|
|
|
|
class TestSlotConstant < MiniTest::Test
|
|
def setup
|
|
Parfait.boot!(Parfait.default_test_options)
|
|
@compiler = Risc::FakeCompiler.new
|
|
@definition = Slot.for(StringConstant.new("hi") , [])
|
|
@register = @definition.to_register(@compiler , InstructionMock.new)
|
|
@instruction = @compiler.instructions.first
|
|
end
|
|
def test_def_class
|
|
assert_equal Risc::LoadConstant , @instruction.class
|
|
end
|
|
def test_def_register
|
|
assert_equal :r1 , @instruction.register.symbol
|
|
end
|
|
def test_def_const
|
|
assert_equal "hi" , @instruction.constant.to_string
|
|
end
|
|
def test_to_s
|
|
assert_equal "[StringConstant]" , @definition.to_s
|
|
end
|
|
end
|
|
class TestSlotConstantType < MiniTest::Test
|
|
def setup
|
|
Parfait.boot!(Parfait.default_test_options)
|
|
@compiler = Risc::FakeCompiler.new
|
|
@definition = Slot.for(StringConstant.new("hi") , [:type])
|
|
@register = @definition.to_register(@compiler , InstructionMock.new)
|
|
@instruction = @compiler.instructions.first
|
|
end
|
|
def test_def_class
|
|
assert_equal Risc::LoadConstant , @instruction.class
|
|
end
|
|
def test_def_register
|
|
assert_equal :r1 , @instruction.register.symbol
|
|
end
|
|
def test_def_const
|
|
assert_equal "hi" , @instruction.constant.to_string
|
|
end
|
|
def test_to_s
|
|
assert_equal "[StringConstant, type]" , @definition.to_s
|
|
end
|
|
def test_def_register2
|
|
assert_equal :r1 , @compiler.instructions[1].register.symbol
|
|
end
|
|
def test_def_next_index
|
|
assert_equal 0 , @compiler.instructions[1].index
|
|
end
|
|
end
|
|
end
|