require_relative 'helper' module Register class TestFieldStatement < MiniTest::Test include Statements def test_field_frame @string_input = <<HERE class Space int main() Message m return m.name end end HERE @expect = [Label, GetSlot, GetSlot, GetSlot, SetSlot, Label, FunctionReturn] check end def test_field_arg @string_input = <<HERE class Space int get_name(Message main) return main.name end int main() Message m return get_name(m) end end HERE @expect = [Label, GetSlot, GetSlot, SetSlot, LoadConstant, SetSlot, LoadConstant , SetSlot, GetSlot, GetSlot, SetSlot, LoadConstant, SetSlot, RegisterTransfer , FunctionCall, Label, RegisterTransfer, GetSlot, GetSlot, SetSlot, Label , FunctionReturn] check end def test_self_field @string_input = <<HERE class Space int main() Type l = self.type return 1 end end HERE @expect = [Label, GetSlot, GetSlot, GetSlot, SetSlot, LoadConstant, SetSlot , Label, FunctionReturn] check end def test_message_field @string_input = <<HERE class Space int main() Word name = message.name return name end end HERE @expect = [Label, RegisterTransfer, GetSlot, GetSlot, SetSlot, GetSlot, GetSlot , SetSlot, Label, FunctionReturn] check end end end