require_relative "../helper" module Risc class TestSendDynamic < MiniTest::Test include Statements def setup super @input = "@a.div4" @expect = [LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsZero, SlotToReg, SlotToReg, SlotToReg, LoadConstant, RegToSlot, LoadConstant, LoadConstant, SlotToReg, SlotToReg, Label, LoadConstant, SlotToReg, OperatorInstruction, IsZero, SlotToReg, OperatorInstruction, IsZero, SlotToReg, Branch, Label, Transfer, Syscall, Transfer, Transfer, LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot, Label, RegToSlot, Label, LoadConstant, SlotToReg, LoadConstant, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, SlotToReg, DynamicJump, Label] end def test_send_instructions assert_nil msg = check_nil , msg end def test_sys produced = produce_body assert_equal Syscall , produced.next(28).class assert_equal :exit , produced.next(28).name end def test_load_address produced = produce_body assert_equal LoadConstant , produced.next(40).class assert_equal Parfait::CacheEntry , produced.next(40).constant.class end def test_function_call produced = produce_body assert_equal DynamicJump , produced.next(66).class end def test_cache_check produced = produce_body assert_equal IsZero , produced.next(6).class assert_equal Label , produced.next(39).class assert_equal produced.next(39) , produced.next(6).label end end end