From ad497b34f1bcbd5e038d0b8692eb2f525d585c90 Mon Sep 17 00:00:00 2001 From: Torsten Ruger Date: Sun, 1 Apr 2018 22:50:15 +0300 Subject: [PATCH] test interpreters event firing --- test/risc/interpreter/helper.rb | 1 - test/risc/interpreter/test_events.rb | 63 +++++++++++++++++++++ test/risc/interpreter/wip/test_called_if.rb | 55 ------------------ test/risc/interpreter/wip/test_change.rb | 48 ---------------- 4 files changed, 63 insertions(+), 104 deletions(-) create mode 100644 test/risc/interpreter/test_events.rb delete mode 100644 test/risc/interpreter/wip/test_called_if.rb delete mode 100644 test/risc/interpreter/wip/test_change.rb diff --git a/test/risc/interpreter/helper.rb b/test/risc/interpreter/helper.rb index 85cc6695..57c33689 100644 --- a/test/risc/interpreter/helper.rb +++ b/test/risc/interpreter/helper.rb @@ -3,7 +3,6 @@ require "risc/interpreter" module Risc module Ticker - include AST::Sexp include InterpreterHelpers include CompilerHelper diff --git a/test/risc/interpreter/test_events.rb b/test/risc/interpreter/test_events.rb new file mode 100644 index 00000000..6d5f7e80 --- /dev/null +++ b/test/risc/interpreter/test_events.rb @@ -0,0 +1,63 @@ +require_relative "helper" + +module Risc + class InterpreterEvents < MiniTest::Test + include Ticker + + def setup + @string_input = as_main("return 5 + 7") + @state_events = {} + @instruction_events = [] + super + end + + def state_changed( a , b) + @state_events[:state_changed] = [a , b] + end + + def instruction_changed(was , is ) + @instruction_events << was + end + + def test_state_change + @interpreter.register_event :state_changed , self + ticks 88 + assert @state_events[:state_changed] + assert_equal 2 , @state_events[:state_changed].length + assert_equal :running, @state_events[:state_changed][0] + @interpreter.unregister_event :state_changed , self + end + + def test_instruction_events + @interpreter.register_event :instruction_changed , self + ticks 88 + assert_equal 88 , @instruction_events.length + @interpreter.unregister_event :instruction_changed , self + end + + def test_chain + #show_ticks # get output of what is + check_chain [Branch, Label, LoadConstant, SlotToReg, LoadConstant, + SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, + SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, + SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, + SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, + Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, + LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, + RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, + LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, + SlotToReg, RegToSlot, SlotToReg, LoadConstant, FunctionCall, + Label, SlotToReg, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, + RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, + RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, + SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, + SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, + FunctionReturn, Transfer, Syscall, NilClass] + assert_equal Parfait::Integer , get_return.class + assert_equal 12 , get_return.value + end + + end +end diff --git a/test/risc/interpreter/wip/test_called_if.rb b/test/risc/interpreter/wip/test_called_if.rb deleted file mode 100644 index 93c2e071..00000000 --- a/test/risc/interpreter/wip/test_called_if.rb +++ /dev/null @@ -1,55 +0,0 @@ -require_relative "../helper" - -module Risc - class IfCalledTest < MiniTest::Test - include Ticker - include CleanCompile - - def setup - @string_input = < :Integer} , - s(:statements, s(:if_statement, :zero, s(:condition, s(:operator_value, :-, s(:arg, :n), s(:int, 12))), - s(:true_statements, s(:call, :putstring , s(:arguments), s(:receiver, s(:string, "then")))), - s(:false_statements, s(:call, :putstring , s(:arguments), s(:receiver, s(:string, "else")))))) - end - def pest_if - #show_ticks # get output of what is - check_chain [Branch, Label, LoadConstant, SlotToReg, RegToSlot, - LoadConstant, RegToSlot, FunctionCall, Label, SlotToReg, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, LoadConstant, - SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, - LoadConstant, RegToSlot, Transfer, FunctionCall, Label, - LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg, - LoadConstant, OperatorInstruction, IsZero, SlotToReg, LoadConstant, - RegToSlot, LoadConstant, RegToSlot, LoadConstant, SlotToReg, - RegToSlot, LoadConstant, RegToSlot, Transfer, FunctionCall, - Label, LoadConstant, SlotToReg, RegToSlot, SlotToReg, - SlotToReg, Transfer, Syscall, Transfer, Transfer, - RegToSlot, Label, FunctionReturn, Transfer, SlotToReg, - SlotToReg, Branch, Label, Label, FunctionReturn, - Transfer, SlotToReg, SlotToReg, LoadConstant, SlotToReg, - RegToSlot, Label, FunctionReturn, Transfer, Syscall, - NilClass] - end - end -end diff --git a/test/risc/interpreter/wip/test_change.rb b/test/risc/interpreter/wip/test_change.rb deleted file mode 100644 index b8ed6f3a..00000000 --- a/test/risc/interpreter/wip/test_change.rb +++ /dev/null @@ -1,48 +0,0 @@ -require_relative "../helper" - -module Risc - class AddChange < MiniTest::Test - include Ticker - - def setup - @input = s(:statements, s(:return, s(:operator_value, :+, s(:int, 5), s(:int, 7)))) - @state_events = {} - @instruction_events = [] - super - end - - def state_changed( a , b) - @state_events[:state_changed] = [a , b] - end - - def instruction_changed(was , is ) - @instruction_events << was - end - - def pest_state_change - @interpreter.register_event :state_changed , self - ticks 30 - assert @state_events[:state_changed] - assert_equal 2 , @state_events[:state_changed].length - assert_equal :running, @state_events[:state_changed][0] - @interpreter.unregister_event :state_changed , self - end - - def pest_instruction_events - @interpreter.register_event :instruction_changed , self - ticks 30 - assert_equal 20 , @instruction_events.length - @interpreter.unregister_event :instruction_changed , self - end - - def pest_chain - #show_ticks # get output of what is - check_chain [Branch, Label, LoadConstant, SlotToReg, RegToSlot, - LoadConstant, RegToSlot, FunctionCall, Label, LoadConstant, - LoadConstant, OperatorInstruction, RegToSlot, LoadConstant, SlotToReg, - RegToSlot, Label, FunctionReturn, Transfer, Syscall, - NilClass] - end - - end -end