rubyx/test/slot_machine/instructions/test_resolve_method.rb
Torsten bc558d1f0d do not copy name of method
so that the resolve can compare name identity
which is what is does, not equality
this (and some other bug) is crashing arm currently
2020-03-25 12:43:57 +02:00

75 lines
2.3 KiB
Ruby

require_relative "helper"
module SlotMachine
class TestResolveMethod < SlotMachineInstructionTest
include Parfait::MethodHelper
def instruction
method = make_method
cache_entry = Parfait::CacheEntry.new(method.frame_type, method)
ResolveMethod.new( "method" , :name , cache_entry )
end
def test_len
assert_equal 20 , all.length , all_str
end
def test_load_name
assert_load 1, Symbol , "id_symbol_"
assert_equal "name" , risc(1).constant.to_s
end
def test_load_cache
assert_load 2, Parfait::CacheEntry , "id_cacheentry_"
end
def test_get_cache_type
assert_slot_to_reg 3 , "id_cacheentry_" , 1 , "id_cacheentry_.cached_type"
end
def test_get_type_methods
assert_slot_to_reg 4 , "id_cacheentry_.cached_type" , 4 , "id_cacheentry_.cached_type.methods"
end
def test_start_label
assert_label 5 , "resolve_"
end
def test_load_nil
assert_load 6, Parfait::NilClass , "id_nilclass_"
end
def test_check_nil
assert_operator 7, :- , "id_nilclass_" , "id_cacheentry_.cached_type.methods" , "op_-_"
end
def test_nil_branch
assert_zero 8, "exit_label_"
end
def test_get_method_name
assert_slot_to_reg 9, "id_cacheentry_.cached_type.methods" , 6 , "id_cacheentry_.cached_type.methods.name"
end
def test_check_name
assert_operator 10, :- , "id_cacheentry_.cached_type.methods.name" , "id_symbol_" , "op_-_"
end
def test_nil_branch
assert_zero 11, "ok_resolve_name_"
end
def test_get_next_method
assert_slot_to_reg 12, "id_cacheentry_.cached_type.methods" , 2 , "id_cacheentry_.cached_type.methods.next_callable"
end
def test_trans
assert_transfer 13 , "id_cacheentry_.cached_type.methods.next" , "id_cacheentry_.cached_type.methods"
end
def test_continue_while
assert_branch 14, "resolve_"
end
def test_goto_exit
assert_label 15, "exit_resolve_name_"
end
def test_move_name
assert_transfer 16, "id_symbol_" , :r1
end
def test_sys
assert_syscall 17, :died
end
def test_label
assert_label 18, "ok_resolve_name_"
end
def test_method
assert_reg_to_slot 19 , "id_cacheentry_.cached_type.methods" , "id_cacheentry_" , 2
end
end
end