diff --git a/test/interpreter/helper.rb b/test/interpreter/helper.rb index e49e784a..4bb6c98e 100644 --- a/test/interpreter/helper.rb +++ b/test/interpreter/helper.rb @@ -10,4 +10,26 @@ module Ticker end return last end + + def show_ticks + classes = [] + error = nil + tick = 1 + begin + while true and (classes.length < 100) + cl = ticks(1).class + tick += 1 + classes << cl + break if cl == NilClass + end + rescue => e + puts "Error at tick #{tick}" + puts e + end + classes = classes.collect {|c| '"' + c.name.sub("Register::","") + '",' } + classes.each_slice(5).each do |line| + puts " " + line.join + end + exit(1) + end end diff --git a/test/interpreter/test_add.rb b/test/interpreter/test_add.rb index a024e502..96428b05 100644 --- a/test/interpreter/test_add.rb +++ b/test/interpreter/test_add.rb @@ -65,14 +65,10 @@ class AddTest < MiniTest::Test end def test_chain - ["Branch" , "LoadConstant" , "GetSlot" , "SetSlot" , "RegisterTransfer" , -# "GetSlot" , "FunctionCall" , "SaveReturn" , "LoadConstant" , "LoadConstant" , -# "OperatorInstruction" , "RegisterTransfer" , "GetSlot" , "LoadConstant" , "SetSlot" , -# "LoadConstant" , "SetSlot" , "GetSlot" , "SetSlot", "RegisterTransfer" , "GetSlot" , "FunctionCall" , -# "SaveReturn" , "GetSlot", "OperatorInstruction" , "RegisterTransfer" , "GetSlot" , "GetSlot" , - "GetSlot" , "FunctionCall" ,"SaveReturn" , "LoadConstant", "LoadConstant"].each_with_index do |name , index| + ["Branch","LoadConstant","GetSlot","SetSlot","RegisterTransfer", + "GetSlot","FunctionCall","SaveReturn","LoadConstant","LoadConstant", + "OperatorInstruction","RegisterTransfer","GetSlot"].each_with_index do |name , index| got = ticks(1) - puts got assert got.class.name.index(name) , "Wrong class for #{index+1}, expect #{name} , got #{got}" end end diff --git a/test/interpreter/test_puti.rb b/test/interpreter/test_puti.rb index 4d623ee5..7e0eb619 100644 --- a/test/interpreter/test_puti.rb +++ b/test/interpreter/test_puti.rb @@ -59,24 +59,23 @@ HERE Virtual.machine.run_before "Register::CallImplementation" @interpreter = Interpreter::Interpreter.new @interpreter.start Virtual.machine.init -# done = ticks(34) - ["Branch" , "LoadConstant" , "GetSlot" , "SetSlot" , "RegisterTransfer" , - "GetSlot" , "FunctionCall" , "SaveReturn", "LoadConstant" , "GetSlot" , - "SetSlot" , "LoadConstant" , "SetSlot" , "RegisterTransfer" , "GetSlot" , - "FunctionCall" ,"SaveReturn" , "GetSlot" , "LoadConstant" , "SetSlot" , - "GetSlot", "SetSlot", "LoadConstant" ,"SetSlot" , "GetSlot" , - "SetSlot", "RegisterTransfer", "GetSlot" , "FunctionCall" , "SaveReturn", - "GetSlot", "LoadConstant", "OperatorInstruction", "SetSlot", "GetSlot", - "OperatorInstruction","SetSlot", "GetSlot", "LoadConstant", "OperatorInstruction", - "Branch", "GetSlot", "SetSlot", "LoadConstant", "SetSlot", - "GetSlot", "SetSlot", "RegisterTransfer", "GetSlot", "FunctionCall", - "SaveReturn", "GetSlot", "LoadConstant", "OperatorInstruction","Branch", - "LoadConstant", "GetSlot", "LoadConstant", "OperatorInstruction","Branch", - "LoadConstant", "GetSlot", "LoadConstant", "OperatorInstruction","Branch", - "LoadConstant", "GetSlot", "LoadConstant", "OperatorInstruction","Branch", - "LoadConstant"].each_with_index do |name , index| + ["Branch","LoadConstant","GetSlot","SetSlot","RegisterTransfer", + "GetSlot","FunctionCall","SaveReturn","LoadConstant","GetSlot", + "SetSlot","LoadConstant","SetSlot","RegisterTransfer","GetSlot", + "FunctionCall","SaveReturn","GetSlot","LoadConstant","SetSlot", + "GetSlot","SetSlot","LoadConstant","SetSlot","GetSlot", + "SetSlot","RegisterTransfer","GetSlot","FunctionCall","SaveReturn", + "GetSlot","LoadConstant","OperatorInstruction","SetSlot","GetSlot", + "OperatorInstruction","SetSlot","GetSlot","LoadConstant","OperatorInstruction", + "IsZeroBranch","GetSlot","SetSlot","LoadConstant","SetSlot", + "GetSlot","SetSlot","RegisterTransfer","GetSlot","FunctionCall", + "SaveReturn","GetSlot","LoadConstant","OperatorInstruction","IsZeroBranch", + "LoadConstant","GetSlot","LoadConstant","OperatorInstruction","IsZeroBranch", + "LoadConstant","GetSlot","LoadConstant","OperatorInstruction","IsZeroBranch", + "LoadConstant","GetSlot","LoadConstant","OperatorInstruction","IsZeroBranch", + "LoadConstant","GetSlot","LoadConstant","OperatorInstruction","IsZeroBranch", + "LoadConstant","NilClass"].each_with_index do |name , index| got = ticks(1) - puts got assert got.class.name.index(name) , "Wrong class for #{index+1}, expect #{name} , got #{got}" end diff --git a/test/interpreter/test_puts.rb b/test/interpreter/test_puts.rb index 76d746de..115eff8f 100644 --- a/test/interpreter/test_puts.rb +++ b/test/interpreter/test_puts.rb @@ -55,13 +55,14 @@ class TestPuts < MiniTest::Test end def test_chain - ["Branch" , "LoadConstant" , "GetSlot" , "SetSlot" , "RegisterTransfer" , - "GetSlot" , "FunctionCall" , "SaveReturn" , "LoadConstant" , "GetSlot" , - "SetSlot" , "LoadConstant" , "SetSlot" , "RegisterTransfer" , "GetSlot" , - "FunctionCall" , "SaveReturn" , "RegisterTransfer" , "Syscall" , "RegisterTransfer" , - "RegisterTransfer" , "SetSlot" , "GetSlot" , "GetSlot" , "RegisterTransfer" , - "GetSlot" , "GetSlot" ,"GetSlot" , "FunctionReturn","RegisterTransfer", - "Syscall" , "NilClass"].each_with_index do |name , index| + show_ticks + ["Branch","LoadConstant","GetSlot","SetSlot","RegisterTransfer", + "GetSlot","FunctionCall","SaveReturn","LoadConstant","GetSlot", + "SetSlot","LoadConstant","SetSlot","RegisterTransfer","GetSlot", + "FunctionCall","SaveReturn","RegisterTransfer","Syscall","RegisterTransfer", + "RegisterTransfer","SetSlot","GetSlot","GetSlot","RegisterTransfer", + "GetSlot","GetSlot","GetSlot","FunctionReturn","RegisterTransfer", + "Syscall","NilClass"].each_with_index do |name , index| got = ticks(1) #puts "TICK #{index}" assert got.class.name.index(name) , "Wrong class for #{index+1}, expect #{name} , got #{got}"