more return testing
This commit is contained in:
parent
55832315eb
commit
f46c4d148e
32
test/mom/test_return_call.rb
Normal file
32
test/mom/test_return_call.rb
Normal 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
|
37
test/mom/test_return_dynamic.rb
Normal file
37
test/mom/test_return_dynamic.rb
Normal 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
|
Loading…
Reference in New Issue
Block a user