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