fix most interpreter tests

This commit is contained in:
2020-03-22 10:42:50 +02:00
parent 06ade75593
commit a93a3c8af5
13 changed files with 35 additions and 32 deletions

View File

@ -28,17 +28,17 @@ module Risc
end
def test_load_factory
assert_load( 15 , Parfait::Factory , "id_factory_")
assert_load( 15 , Parfait::Factory , :r1)
assert_equal :next_integer , @instruction.constant.attribute_name
end
def test_load_nil
assert_load( 16 , Parfait::NilClass , "id_nilclass_")
assert_load( 16 , Parfait::NilClass , :r2)
end
def test_slot_receiver #load next_object from factory
assert_slot_to_reg( 17 , "id_factory_" , 2 , "id_factory_.next_object")
assert_slot_to_reg( 17 , :r1 , 2 , :r3)
end
def test_nil_check
assert_operator 18 , :- , "id_nilclass_" , "id_factory_.next_object" , "op_-_"
assert_operator 18 , :- , :r2 , :r3 , :r4
value = @interpreter.get_register(@instruction.result)
assert_equal ::Integer , value.class
assert 0 != value
@ -47,10 +47,10 @@ module Risc
assert_not_zero 19 , "cont_label"
end
def test_load_next_int
assert_slot_to_reg( 20 , "id_factory_.next_object" , 1 , "id_factory_.next_object.next_integer")
assert_slot_to_reg( 20 , :r3 , 1 , :r2)
end
def test_move_next_back_to_factory
assert_reg_to_slot( 21 , "id_factory_.next_object.next_integer" , "id_factory_" , 2)
assert_reg_to_slot( 21 , :r2 , :r1 , 2)
end
end
end

View File

@ -26,16 +26,16 @@ module Risc
assert_equal 1 , get_return
end
def test_op
assert_operator 26 , :- , "message.receiver.data_1" , "message.arg1.data_1" , "op_-_"
assert_operator 26 , :- , :r2 , :r4 , :r1
assert_equal 1 , @interpreter.get_register(@instruction.result)
assert_equal 6 , @interpreter.get_register(:"message.receiver.data_1")
assert_equal 5 , @interpreter.get_register(:"message.arg1.data_1")
assert_equal 6 , @interpreter.get_register(:r2)
assert_equal 5 , @interpreter.get_register(:r4)
end
def test_return
ret = main_ticks(46)
assert_equal FunctionReturn , ret.class
assert_equal :"message.return_address" , ret.register.symbol
assert_equal 36572 , @interpreter.get_register(ret.register).value
assert_equal :r1 , ret.register.symbol
assert_equal 36540 , @interpreter.get_register(ret.register).value
end
end
end

View File

@ -26,9 +26,9 @@ module Risc
end
def test_op
assert_operator 22 , :>>, "message.receiver.data_1" , "integer_1" , "op_>>_"
assert_equal 2 , @interpreter.get_register(:integer_1)
assert_equal 9 , @interpreter.get_register(:"message.receiver.data_1")
assert_operator 22 , :>>, :r2 , :r1 , :r4
assert_equal 2 , @interpreter.get_register(:r1)
assert_equal 9 , @interpreter.get_register(:r2)
end
end
end

View File

@ -30,9 +30,9 @@ module Risc
assert @interpreter.flags[:zero]
end
def test_op
assert_operator 26 , :*, "message.receiver.data_1" , "message.arg1.data_1" , "op_*_"
assert_equal 2147483648 , @interpreter.get_register(:"message.arg1.data_1")
assert_equal 2147483648 , @interpreter.get_register(:"message.receiver.data_1")
assert_operator 26 , :*, :r2 , :r4 , :r1
assert_equal 2147483648 , @interpreter.get_register(:r4)
assert_equal 2147483648 , @interpreter.get_register(:r2)
end
def test_overflow
main_ticks( 26 )

View File

@ -26,14 +26,14 @@ module Risc
assert_equal 10 , get_return
end
def test_op
assert_operator 26, :+ , "message.receiver.data_1" , "message.arg1.data_1" , "op_+_"
assert_operator 26, :+ , :r2 , :r4 , :r1
assert_equal 10 , @interpreter.get_register(@instruction.result.symbol)
end
def test_move_res_to_int
assert_reg_to_slot( 27 , "op_+_" , "id_factory_.next_object" , 2)
assert_reg_to_slot( 27 , :r1 , :r3 , 2)
end
def test_move_int_to_reg
assert_reg_to_slot( 28 , "id_factory_.next_object" , :message , 5)
assert_reg_to_slot( 28 , :r3 , :r0 , 5)
end
end
end

View File

@ -11,7 +11,7 @@ module Risc
end
def test_chain
#show_main_ticks # get output of what is
show_main_ticks # get output of what is
check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, #5
RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, #10
FunctionCall, LoadConstant, LoadConstant, SlotToReg, OperatorInstruction, #15
@ -48,7 +48,7 @@ module Risc
end
def test_move_sys_return
assert_transfer(26, :syscall_1 ,:integer_tmp)
assert_transfer(26, :r0 ,:r1)
assert_equal 11 , @interpreter.get_register(:integer_tmp)
end
def test_restore_message