move assignment test into own dir
This commit is contained in:
32
test/mom/assign/test_assign_arg_const.rb
Normal file
32
test/mom/assign/test_assign_arg_const.rb
Normal file
@ -0,0 +1,32 @@
|
||||
require_relative '../helper'
|
||||
|
||||
module Risc
|
||||
class TestAssignArgConst < MiniTest::Test
|
||||
include Statements
|
||||
|
||||
def setup
|
||||
super
|
||||
@input = "arg = 5"
|
||||
@expect = [LoadConstant, SlotToReg, RegToSlot]
|
||||
end
|
||||
def test_local_assign_instructions
|
||||
assert_nil msg = check_nil , msg
|
||||
end
|
||||
|
||||
def test_constant_load
|
||||
produced = produce_body
|
||||
assert_equal 5 , produced.constant.known_object.value
|
||||
end
|
||||
|
||||
def test_slot_move
|
||||
produced = produce_body
|
||||
assert_equal produced.next(2).register , produced.register
|
||||
end
|
||||
def test_load_args_from_message
|
||||
produced = produce_body
|
||||
assert_equal :r0 , produced.next.array.symbol , produced.next.to_rxf
|
||||
assert_equal 9 , produced.next.index , produced.next.to_rxf
|
||||
end
|
||||
|
||||
end
|
||||
end
|
33
test/mom/assign/test_assign_ivar_const.rb
Normal file
33
test/mom/assign/test_assign_ivar_const.rb
Normal file
@ -0,0 +1,33 @@
|
||||
require_relative '../helper'
|
||||
|
||||
module Risc
|
||||
class TestAssignIvarConst < MiniTest::Test
|
||||
include Statements
|
||||
|
||||
def setup
|
||||
super
|
||||
@input = "@ivar = 5"
|
||||
@expect = [LoadConstant, SlotToReg, RegToSlot]
|
||||
end
|
||||
def test_local_assign_instructions
|
||||
assert_nil msg = check_nil , msg
|
||||
end
|
||||
|
||||
def test_constant_load
|
||||
produced = produce_body
|
||||
assert_equal 5 , produced.constant.known_object.value
|
||||
end
|
||||
|
||||
def test_slot_move
|
||||
produced = produce_body
|
||||
assert_equal produced.next.next.register , produced.register
|
||||
end
|
||||
|
||||
def test_load_self_from_message
|
||||
produced = produce_body
|
||||
assert_equal :r0 , produced.next.array.symbol , produced.next.to_rxf
|
||||
assert_equal 3 , produced.next.index , produced.next.to_rxf
|
||||
end
|
||||
|
||||
end
|
||||
end
|
31
test/mom/assign/test_assign_local_arg.rb
Normal file
31
test/mom/assign/test_assign_local_arg.rb
Normal file
@ -0,0 +1,31 @@
|
||||
require_relative '../helper'
|
||||
|
||||
module Risc
|
||||
class TestAssignLocalArg < MiniTest::Test
|
||||
include Statements
|
||||
|
||||
def setup
|
||||
super
|
||||
@input = "local = arg"
|
||||
@expect = [SlotToReg, SlotToReg, SlotToReg, RegToSlot]
|
||||
end
|
||||
def test_local_assign_instructions
|
||||
assert_nil msg = check_nil , msg
|
||||
end
|
||||
|
||||
def test_slot_move
|
||||
produced = produce_body
|
||||
assert_equal produced.next(3).register , produced.register
|
||||
end
|
||||
def test_load_args_from_message
|
||||
produced = produce_body
|
||||
assert_equal :r0 , produced.array.symbol , produced.next.to_rxf
|
||||
assert_equal 9 , produced.index , produced.next.to_rxf
|
||||
end
|
||||
def test_load_frame_from_message
|
||||
produced = produce_body
|
||||
assert_equal :r0 , produced.next(2).array.symbol , produced.next.to_rxf
|
||||
assert_equal 2 , produced.next.index , produced.next.to_rxf
|
||||
end
|
||||
end
|
||||
end
|
27
test/mom/assign/test_assign_local_const.rb
Normal file
27
test/mom/assign/test_assign_local_const.rb
Normal file
@ -0,0 +1,27 @@
|
||||
require_relative '../helper'
|
||||
|
||||
module Risc
|
||||
class TestAssignLocalConst < MiniTest::Test
|
||||
include Statements
|
||||
|
||||
def setup
|
||||
super
|
||||
@input = "r = 5"
|
||||
@expect = [LoadConstant,SlotToReg, RegToSlot]
|
||||
end
|
||||
def test_local_assign_instructions
|
||||
assert_nil msg = check_nil , msg
|
||||
end
|
||||
|
||||
def test_constant_load
|
||||
produced = produce_body
|
||||
assert_equal 5 , produced.constant.known_object.value
|
||||
end
|
||||
|
||||
def test_slot_move
|
||||
produced = produce_body
|
||||
assert_equal produced.next(2).register , produced.register
|
||||
end
|
||||
|
||||
end
|
||||
end
|
28
test/mom/assign/test_assign_local_ivar.rb
Normal file
28
test/mom/assign/test_assign_local_ivar.rb
Normal file
@ -0,0 +1,28 @@
|
||||
require_relative '../helper'
|
||||
|
||||
module Risc
|
||||
class TestAssignLocalIvar < MiniTest::Test
|
||||
include Statements
|
||||
|
||||
def setup
|
||||
super
|
||||
@input = "@ivar = 5 ; r = @ivar"
|
||||
@expect = [LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg ,
|
||||
RegToSlot]
|
||||
end
|
||||
def test_local_assign_instructions
|
||||
assert_nil msg = check_nil , msg
|
||||
end
|
||||
|
||||
def test_constant_load
|
||||
produced = produce_body
|
||||
assert_equal 5 , produced.constant.known_object.value
|
||||
end
|
||||
|
||||
def test_slot_move
|
||||
produced = produce_body
|
||||
assert_equal produced.next(2).register , produced.register
|
||||
end
|
||||
|
||||
end
|
||||
end
|
28
test/mom/assign/test_assign_local_send.rb
Normal file
28
test/mom/assign/test_assign_local_send.rb
Normal file
@ -0,0 +1,28 @@
|
||||
require_relative '../helper'
|
||||
|
||||
module Risc
|
||||
class TestAssignLocalSend < MiniTest::Test
|
||||
include Statements
|
||||
|
||||
def setup
|
||||
super
|
||||
@input = "r = 5.mod4"
|
||||
@expect = [Label, LoadConstant, SlotToReg, RegToSlot, Label, Label ,
|
||||
SlotToReg, SlotToReg, RegToSlot]
|
||||
end
|
||||
def test_local_assign_instructions
|
||||
assert_nil msg = check_nil , msg
|
||||
end
|
||||
|
||||
def ttest_constant_load
|
||||
produced = produce_body
|
||||
assert_equal 5 , produced.constant.known_object.value
|
||||
end
|
||||
|
||||
def ttest_slot_move
|
||||
produced = produce_body
|
||||
assert_equal produced.next.register , produced.register
|
||||
end
|
||||
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user