more return testing

This commit is contained in:
Torsten Ruger 2018-03-23 11:21:41 +02:00
parent 55832315eb
commit f46c4d148e
2 changed files with 69 additions and 0 deletions

View File

@ -0,0 +1,32 @@
require_relative "helper"
module Risc
class TestReturnCall < MiniTest::Test
include Statements
def setup
super
@input = "return 5.mod4"
@expect = [LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg ,
SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg ,
SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg ,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant ,
FunctionCall, Label, SlotToReg, SlotToReg, RegToSlot, SlotToReg ,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg ,
Transfer, SlotToReg, FunctionReturn]
end
def test_return_instructions
assert_nil msg = check_nil , msg
end
def test_function_return
produced = produce_body
assert_equal FunctionReturn , produced.next(38).class
end
def test_load_5
produced = produce_body
assert_equal LoadConstant , produced.next(16).class
assert_equal 5 , produced.next(16).constant.value
end
end
end

View File

@ -0,0 +1,37 @@
require_relative "helper"
module Risc
class TestReturnDynamic < MiniTest::Test
include Statements
def setup
super
@input = "return @a.mod4"
@expect = [LoadConstant, SlotToReg, SlotToReg, SlotToReg, NotSame, SlotToReg ,
SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot ,
LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot ,
LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot ,
LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg ,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant ,
FunctionCall, Label, SlotToReg, RegToSlot, Label, LoadConstant ,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg ,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg ,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg ,
RegToSlot, LoadConstant, SlotToReg, DynamicJump, SlotToReg, SlotToReg ,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg ,
RegToSlot, SlotToReg, Transfer, SlotToReg, FunctionReturn]
end
def test_return_instructions
assert_nil msg = check_nil , msg
end
def test_function_return
produced = produce_body
assert_equal FunctionReturn , produced.next(76).class
end
def test_cache_check
produced = produce_body
assert_equal NotSame , produced.next(4).class
end
end
end