simple send test works again
This commit is contained in:
@ -1,31 +1,31 @@
|
||||
module Vool
|
||||
# relies on @stats and receiver_type method
|
||||
# relies on @ins and receiver_type method
|
||||
module SimpleSendHarness
|
||||
def test_compiles_not_array
|
||||
assert Array != @stats.class , @stats
|
||||
assert Array != @ins.class , @ins
|
||||
end
|
||||
def test_class_compiles
|
||||
assert_equal Mom::MessageSetup , @stats.class , @stats
|
||||
assert_equal Mom::MessageSetup , @ins.class , @ins
|
||||
end
|
||||
def test_two_instructions_are_returned
|
||||
assert_equal 3 , @stats.length , @stats.to_rxf
|
||||
assert_equal 4 , @ins.length , @ins
|
||||
end
|
||||
def test_receiver_move_class
|
||||
assert_equal Mom::ArgumentTransfer, @stats[1].class
|
||||
assert_equal Mom::ArgumentTransfer, @ins.next(2).class
|
||||
end
|
||||
def test_receiver_move
|
||||
assert_equal :receiver, @stats[1].receiver.left.slots[1]
|
||||
assert_equal :receiver, @ins.next(1).left.slots[1]
|
||||
end
|
||||
def test_receiver
|
||||
type , value = receiver
|
||||
assert_equal type, @stats[1].receiver.right.class
|
||||
assert_equal value, @stats[1].receiver.right.value
|
||||
assert_equal type, @ins.next.right.class
|
||||
assert_equal value, @ins.next.right.value
|
||||
end
|
||||
def test_call_is
|
||||
assert_equal Mom::SimpleCall, @stats[2].class
|
||||
assert_equal Mom::SimpleCall, @ins.next(3).class
|
||||
end
|
||||
def test_call_has_method
|
||||
assert_equal Parfait::TypedMethod, @stats[2].method.class
|
||||
assert_equal Parfait::TypedMethod, @ins.next(3).method.class
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -8,22 +8,22 @@ module Vool
|
||||
|
||||
def setup
|
||||
Risc.machine.boot
|
||||
@stats = compile_first_method( "5.mod4(1,2)").first
|
||||
@ins = compile_first_method( "5.mod4(1,2)")
|
||||
end
|
||||
|
||||
def receiver
|
||||
[Mom::IntegerConstant , 5]
|
||||
end
|
||||
def test_args_two_move
|
||||
assert_equal :next_message, @stats[1].arguments[1].left.slots[0]
|
||||
assert_equal :arguments, @stats[1].arguments[1].left.slots[1]
|
||||
assert_equal :next_message, @ins.next(2).arguments[1].left.slots[0]
|
||||
assert_equal :arguments, @ins.next(2).arguments[1].left.slots[1]
|
||||
end
|
||||
def test_args_two_str
|
||||
assert_equal Mom::IntegerConstant, @stats[1].arguments[1].right.class
|
||||
assert_equal 2, @stats[1].arguments[1].right.value
|
||||
assert_equal Mom::IntegerConstant, @ins.next(2).arguments[1].right.class
|
||||
assert_equal 2, @ins.next(2).arguments[1].right.value
|
||||
end
|
||||
def test_array
|
||||
check_array [MessageSetup,ArgumentTransfer,SimpleCall] , @stats
|
||||
check_array [Mom::MessageSetup,Mom::SlotLoad,Mom::ArgumentTransfer,Mom::SimpleCall] , @ins
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user