require_relative '../helper' require "interpreter/interpreter" module RuntimeTests def setup @stdout = "" end def main <<HERE class Object int main() PROGRAM end end HERE end def check machine = Register.machine.boot Soml::Compiler.load_parfait machine.parse_and_compile main.sub("PROGRAM" , @string_input ) machine.collect @interpreter = Interpreter::Interpreter.new @interpreter.start machine.init count = 0 begin count += 1 #puts interpreter.instruction @interpreter.tick end while( ! @interpreter.instruction.nil?) assert_equal @stdout , @interpreter.stdout end def check_return val check assert_equal Parfait::Message , @interpreter.get_register(:r0).class assert_equal val , @interpreter.get_register(:r0).return_value end def check_return_class val check assert_equal val , @interpreter.get_register(:r0).return_value.class end end