require_relative 'helper' module Rubyx class TestRubyHello #< MiniTest::Test include RubyxTests Branch = Risc::Branch Label = Risc::Label def setup @string_input = as_main '"Hello there".putstring' Risc.machine.boot # do_clean_compile RubyxCompiler.compile @string_input Risc::Collector.collect_space @interpreter = Risc::Interpreter.new @interpreter.start Risc.machine.init end def test_chain #show_ticks check_chain [Branch, Label, LoadConstant, SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, Label, LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, RegToSlot, RiscTransfer, FunctionCall, Label, LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RiscTransfer, Syscall, RiscTransfer, RiscTransfer, RegToSlot, Label, FunctionReturn, RiscTransfer, SlotToReg, SlotToReg, Label, FunctionReturn, RiscTransfer, Syscall, NilClass] end def test_overflow instruction = ticks( 24 ) assert_equal Risc::FunctionCall , instruction.class assert_equal :putstring , instruction.method.name end def test_ruby_hello done = ticks(45) assert_equal NilClass , done.class assert_equal "Hello there" , @interpreter.stdout end end end