rubyx/test/risc/interpreter/conditional/test_if_constant.rb

43 lines
1.3 KiB
Ruby
Raw Normal View History

2018-04-23 12:16:46 +02:00
require_relative "../helper"
module Risc
2018-04-24 18:46:22 +02:00
class InterpreterIfConstant < MiniTest::Test
include Ticker
def setup
@string_input = as_main 'if( 10 ); return 1;else;return 2;end'
super
end
def test_if
#show_main_ticks # get output of what is in main
check_main_chain [LoadConstant, LoadConstant, OperatorInstruction, IsZero, LoadConstant, #5
2019-08-23 14:31:22 +02:00
OperatorInstruction, IsZero, LoadConstant, RegToSlot, Branch, #10
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, #15
FunctionReturn, Transfer, SlotToReg, SlotToReg, Transfer, #20
2019-08-23 14:31:22 +02:00
Syscall, NilClass,] #25
assert_equal 1 , get_return
end
def test_load_10
2018-05-24 18:38:48 +02:00
load = main_ticks(1)
assert_equal LoadConstant , load.class
assert_equal 10 , load.constant.value
end
def test_load_false
2018-05-24 18:38:48 +02:00
load = main_ticks(2)
assert_equal LoadConstant , load.class
assert_equal Parfait::FalseClass , load.constant.class
end
def test_compare
2018-05-24 18:38:48 +02:00
op = main_ticks(3)
assert_equal OperatorInstruction , op.class
assert_equal :- , op.operator
end
def test_not_zero
2018-05-24 18:38:48 +02:00
check = main_ticks(4)
assert_equal IsZero , check.class
assert check.label.name.start_with?("false_label") , check.label.name
end
end
end