fix argument transfer (to be logical)
This commit is contained in:
@ -3,15 +3,15 @@ require_relative "helper"
|
||||
module SlotMachine
|
||||
class TestArgumentTransfer < SlotMachineInstructionTest
|
||||
def instruction
|
||||
receiver = SlottedMessage.new( [:receiver])
|
||||
arg = SlotLoad.new("test", [:message, :caller] , [:message,:type] )
|
||||
receiver = SlottedMessage.new( [:arg1])
|
||||
arg = SlottedMessage.new( [:receiver , :type])
|
||||
ArgumentTransfer.new("" , receiver ,[arg])
|
||||
end
|
||||
def test_len
|
||||
assert_equal 6 , all.length , all_str
|
||||
assert_equal 8 , all.length , all_str
|
||||
end
|
||||
def test_1_slot
|
||||
assert_slot_to_reg risc(1) ,:r0 , 2 , :r2
|
||||
assert_slot_to_reg risc(1) ,:r0 , 9 , :r2
|
||||
end
|
||||
def test_2_slot
|
||||
assert_slot_to_reg risc(2) ,:r0 , 1 , :r3
|
||||
@ -20,10 +20,16 @@ module SlotMachine
|
||||
assert_reg_to_slot risc(3) , :r2 , :r3 , 2
|
||||
end
|
||||
def test_4_slot
|
||||
assert_slot_to_reg risc(4) ,:r0 , 0 , :r2
|
||||
assert_slot_to_reg risc(4) ,:r0 , 2 , :r2
|
||||
end
|
||||
def test_5_reg
|
||||
assert_reg_to_slot risc(5) , :r2 , :r0 , 6
|
||||
def test_5
|
||||
assert_slot_to_reg risc(5) ,:r2 , 0 , :r2
|
||||
end
|
||||
def test_6
|
||||
assert_slot_to_reg risc(6) ,:r0 , 1 , :r3
|
||||
end
|
||||
def test_7
|
||||
assert_reg_to_slot risc(7) , :r2 , :r3 , 9
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -45,7 +45,7 @@ module Sol
|
||||
assert_equal Parfait::Class, @ins.next.receiver.known_object.class
|
||||
end
|
||||
def test_arg_one
|
||||
assert_equal SlotLoad, @ins.next(1).arguments[0].class
|
||||
assert_equal SlottedConstant, @ins.next(1).arguments[0].class
|
||||
end
|
||||
def test_receiver_move_class
|
||||
assert_equal ArgumentTransfer, @ins.next(1).class
|
||||
|
@ -11,7 +11,7 @@ module Sol
|
||||
assert_equal SlottedMessage, @ins.next.receiver.class
|
||||
end
|
||||
def test_arg_one
|
||||
assert_equal SlotLoad, @ins.next(1).arguments[0].class
|
||||
assert_equal SlottedConstant, @ins.next(1).arguments[0].class
|
||||
end
|
||||
def test_call_two
|
||||
assert_equal SimpleCall, @ins.next(2).class
|
||||
|
@ -12,12 +12,11 @@ module Sol
|
||||
[SlotMachine::IntegerConstant , 5]
|
||||
end
|
||||
def test_args_two_move
|
||||
assert_equal :next_message, @ins.next(1).arguments[1].left.slots.name
|
||||
assert_equal :arg2, @ins.next(1).arguments[1].left.slots.next_slot.name
|
||||
assert_equal SlottedConstant, @ins.next(1).arguments[1].class
|
||||
end
|
||||
def test_args_two_str
|
||||
assert_equal SlotMachine::IntegerConstant, @ins.next(1).arguments[1].right.known_object.class
|
||||
assert_equal 2, @ins.next(1).arguments[1].right.known_object.value
|
||||
assert_equal SlottedConstant, @ins.next(1).arguments[1].class
|
||||
assert_equal 2, @ins.next(1).arguments[1].known_object.value
|
||||
end
|
||||
def test_array
|
||||
check_array [MessageSetup,ArgumentTransfer,SimpleCall, SlotLoad, ReturnJump,
|
||||
|
@ -22,10 +22,8 @@ module Sol
|
||||
assert_equal 1, @ins.next(3).arguments.length
|
||||
end
|
||||
def test_args_one_l
|
||||
left = @ins.next(3).arguments[0].left
|
||||
assert_equal Symbol, left.known_object.class
|
||||
assert_equal :message, left.known_object
|
||||
assert_equal "message.next_message.arg1", left.to_s
|
||||
left = @ins.next(3).arguments[0]
|
||||
assert_equal SlotMachine::IntegerConstant, left.known_object.class
|
||||
end
|
||||
def test_check_left
|
||||
assert_equal SlottedObject, @ins.left.class
|
||||
|
Reference in New Issue
Block a user