rubyx/test/support/risc_assert.rb
Torsten Rüger 6f108f67d7 Starting to build detailed mom to risc test
so we can get rid of brittle risc folder tests
All of those tests rely on many many implementation details
should just test result through interpreter, no chain.
2019-09-15 17:44:35 +03:00

35 lines
1.5 KiB
Ruby

module Minitest
module Assertions
def assert_slot_to_reg( slot , array = nil, index = nil , register = nil)
assert_equal Risc::SlotToReg , slot.class
assert_equal( array , slot.array.symbol , "wrong source register") if array
assert_equal( index , slot.index, "wrong source index") if index
assert_equal( register , slot.register.symbol, "wrong destination") if register
end
def assert_reg_to_slot( slot , register = nil, array = nil, index = nil )
assert_equal Risc::RegToSlot , slot.class
assert_equal( register , slot.register.symbol, "wrong source register") if register
assert_equal( array , slot.array.symbol, "wrong destination register") if array
assert_equal( index , slot.index, "wrong destination index") if index
end
def assert_load(load , clazz = nil , register = nil)
assert_equal Risc::LoadConstant , load.class
assert_equal( clazz , load.constant.class) if clazz
assert_equal( register , load.register.symbol, "wrong destination register") if register
end
def assert_transfer( transfer , from , to)
assert_equal Risc::Transfer , transfer.class
assert_equal from , transfer.from.symbol
assert_equal to , transfer.to.symbol
end
def assert_label( label , name )
assert_equal Risc::Label , label.class
if(name[-1] == "_")
assert label.name.start_with?(name) , "Label does not start with #{name}:#{label.name}"
else
assert_equal name , label.name
end
end
end
end