rubyx/test/mom/send/test_send_dynamic.rb
Torsten Rüger 4bf23defc8 fix many tests with preloading
preloading, something akin to builtin, loads some very small predefined (macro) methods for the tests to work (ie call)
2019-09-12 22:27:26 +03:00

49 lines
1.8 KiB
Ruby

require_relative "../helper"
module Risc
class TestSendDynamic < MiniTest::Test
include Statements
def setup
@preload = "Integer.div4"
@input = "@classes.div4"
@expect = [LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, #5
OperatorInstruction, IsZero, SlotToReg, SlotToReg, SlotToReg, #10
LoadConstant, RegToSlot, LoadConstant, LoadConstant, SlotToReg, #15
SlotToReg, Label, LoadConstant, OperatorInstruction, IsZero, #20
SlotToReg, OperatorInstruction, IsZero, SlotToReg, Branch, #25
Label, LoadConstant, SlotToReg, Transfer, Syscall, #30
Transfer, Transfer, SlotToReg, RegToSlot, Label, #35
RegToSlot, Label, LoadConstant, SlotToReg, SlotToReg, #40
RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, #45
LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, #50
SlotToReg, DynamicJump, Label, SlotToReg, RegToSlot, #55
Branch,] #60
end
def test_send_instructions
assert_nil msg = check_nil , msg
end
def test_sys
produced = produce_body
assert_equal Syscall , produced.next(29).class
assert_equal :died , produced.next(29).name
end
def test_load_address
produced = produce_body
assert_equal LoadConstant , produced.next(26).class
assert_equal Parfait::Factory , produced.next(26).constant.class
end
def test_function_call
produced = produce_body
assert_equal DynamicJump , produced.next(51).class
end
def test_cache_check
produced = produce_body
assert_equal IsZero , produced.next(6).class
assert_equal Label , produced.next(36).class
assert_equal produced.next(36) , produced.next(6).label
end
end
end