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