rubyx/test/risc/interpreter/calling/test_div10.rb
Torsten Rüger 12b29285d7 Lots of preloading for tests
so many relied (implicitly( on some builtin function
after all can't do much in ruby without calling
Now all those dependencies are explicit
Small risc changes come because the macro version has a return label and unreachable label
2019-09-13 14:07:12 +03:00

47 lines
2.1 KiB
Ruby

require_relative "../helper"
module Risc
class InterpreterDiv10 < MiniTest::Test
include Ticker
def setup
@preload = "Integer.div10"
@string_input = as_main("return 25.div10")
super
end
def test_chain
#show_main_ticks # get output of what is
check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, #5
RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, #10
FunctionCall, LoadConstant, SlotToReg, LoadConstant, OperatorInstruction, #15
IsNotZero, SlotToReg, RegToSlot, SlotToReg, SlotToReg, #20
Transfer, Transfer, LoadData, OperatorInstruction, LoadData, #25
OperatorInstruction, OperatorInstruction, Branch, LoadData, Transfer, #30
OperatorInstruction, OperatorInstruction, LoadData, Transfer, OperatorInstruction, #35
OperatorInstruction, LoadData, Transfer, OperatorInstruction, OperatorInstruction, #40
LoadData, OperatorInstruction, LoadData, Transfer, OperatorInstruction, #45
OperatorInstruction, Transfer, LoadData, OperatorInstruction, LoadData, #50
OperatorInstruction, OperatorInstruction, RegToSlot, RegToSlot, SlotToReg, #55
RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot, #60
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, #65
RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot, #70
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, Transfer, #75
SlotToReg, SlotToReg, Syscall, NilClass,] #80
assert_equal 2 , get_return
end
def test_load_25
load_ins = main_ticks 4
assert_equal LoadConstant , load_ins.class
assert_equal 25 , @interpreter.get_register(load_ins.register).value
end
def test_return_class
ret = main_ticks(74)
assert_equal FunctionReturn , ret.class
link = @interpreter.get_register( ret.register )
assert_equal ::Integer , link.class
end
end
end