48 lines
1.6 KiB
Ruby
48 lines
1.6 KiB
Ruby
require_relative "../helper"
|
|
|
|
module Risc
|
|
class TestRegisterValue1 < MiniTest::Test
|
|
|
|
def setup
|
|
Parfait.boot!(Parfait.default_test_options)
|
|
@compiler = Risc.test_compiler
|
|
@r0 = RegisterValue.new(:message , :Message).set_compiler(@compiler)
|
|
@r1 = RegisterValue.new(:id_1234 , :Space).set_compiler(@compiler)
|
|
end
|
|
|
|
def test_resolves_index_ok
|
|
assert_equal 6 , @r0.resolve_index(:caller)
|
|
end
|
|
def test_resolves_index_fail
|
|
assert_raises {@r0.resolve_index(:something)}
|
|
end
|
|
def test_reduce_int
|
|
ins = @r0.reduce_int
|
|
assert_equal RegisterValue , ins.class
|
|
assert_equal SlotToReg , @compiler.current.class
|
|
assert_equal Parfait::Integer.integer_index , @compiler.current.index
|
|
assert_equal :message , ins.symbol
|
|
end
|
|
def test_get_new_left_0
|
|
assert_equal RegisterValue , @r0.get_new_left(:caller , @compiler).class
|
|
end
|
|
def test_get_new_left_no_extra
|
|
assert @r0.get_new_left(:caller , @compiler).extra.empty?
|
|
end
|
|
def test_get_new_left_0_reg
|
|
assert_equal :"message.caller" , @r0.get_new_left(:caller , @compiler).symbol
|
|
end
|
|
def test_get_new_left_1
|
|
assert_equal RegisterValue , @r0.get_new_left(:caller , @compiler).class
|
|
end
|
|
def test_get_new_left_1_reg
|
|
assert_equal :"id_1234.classes" , @r1.get_new_left(:classes , @compiler).symbol
|
|
end
|
|
def test_get_left_uses_extra
|
|
@r1 = RegisterValue.new(:message , :Space , type_arguments: @r0.type)
|
|
# works with nil as compiler, because extra is used
|
|
assert_equal :Message , @r1.get_new_left(:arguments , nil).type.class_name
|
|
end
|
|
end
|
|
end
|