From 091900ef1cc7175b0bd7333c7655a0dbb9404e4d Mon Sep 17 00:00:00 2001 From: Torsten Ruger <torsten@villataika.fi> Date: Mon, 16 Jan 2017 17:43:39 +0200 Subject: [PATCH] move test helpers up, so they can be used in Melon too --- test/helper.rb | 51 +++++++++++++++++++++++++++++ test/melon/fragments/helper.rb | 5 +-- test/register/interpreter/helper.rb | 44 +------------------------ 3 files changed, 55 insertions(+), 45 deletions(-) diff --git a/test/helper.rb b/test/helper.rb index 255db663..a5454733 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -28,6 +28,57 @@ module Compiling end +module Register + # relies on @interpreter instance to be set up during setup + module InterpreterHelpers + + def check_chain should + should.each_with_index do |name , index| + got = ticks(1) + assert_equal got.class ,name , "Wrong class for #{index+1}, expect #{name} , got #{got}" + end + end + + def check_return val + assert_equal Parfait::Message , @interpreter.get_register(:r0).class + assert_equal val , @interpreter.get_register(:r0).return_value + end + + def ticks num + last = nil + num.times do + last = @interpreter.instruction + @interpreter.tick + end + return last + end + + def show_ticks + classes = [] + tick = 1 + begin + while true and (classes.length < 200) + cl = ticks(1).class + tick += 1 + classes << cl + break if cl == NilClass + end + rescue => e + puts "Error at tick #{tick}" + puts e + puts e.backtrace + end + str = classes.to_s.gsub("Register::","") + str.split(",").each_slice(5).each do |line| + puts " " + line.join(",") + "," + end + puts "length = #{classes.length}" + exit(1) + end + end +end + + class Ignored def == other return false unless other.class == self.class diff --git a/test/melon/fragments/helper.rb b/test/melon/fragments/helper.rb index 15b7660d..f1e44bbe 100644 --- a/test/melon/fragments/helper.rb +++ b/test/melon/fragments/helper.rb @@ -5,12 +5,13 @@ require "parser/ruby22" module Melon module MelonTests include CompilerHelper - + include Register::InterpreterHelpers + def setup Register.machine.boot end - def check + def check_nil RubyCompiler.compile @string_input Register::Collector.collect_space @interpreter = Register::Interpreter.new diff --git a/test/register/interpreter/helper.rb b/test/register/interpreter/helper.rb index ade7abb3..df63ec1e 100644 --- a/test/register/interpreter/helper.rb +++ b/test/register/interpreter/helper.rb @@ -4,6 +4,7 @@ require "register/interpreter" module Register module Ticker include AST::Sexp + include InterpreterHelpers def setup Register.machine.boot @@ -18,48 +19,5 @@ module Register def do_clean_compile end - def check_chain should - should.each_with_index do |name , index| - got = ticks(1) - assert_equal got.class ,name , "Wrong class for #{index+1}, expect #{name} , got #{got}" - end - end - - def check_return val - assert_equal Parfait::Message , @interpreter.get_register(:r0).class - assert_equal val , @interpreter.get_register(:r0).return_value - end - - def ticks num - last = nil - num.times do - last = @interpreter.instruction - @interpreter.tick - end - return last - end - - def show_ticks - classes = [] - tick = 1 - begin - while true and (classes.length < 200) - cl = ticks(1).class - tick += 1 - classes << cl - break if cl == NilClass - end - rescue => e - puts "Error at tick #{tick}" - puts e - puts e.backtrace - end - str = classes.to_s.gsub("Register::","") - str.split(",").each_slice(5).each do |line| - puts " " + line.join(",") + "," - end - puts "length = #{classes.length}" - exit(1) - end end end