add decent method to get the programs return to interpreter
only had such methods in tests, but they really belong in code also adding fake values to true ,false and nil
This commit is contained in:
@ -69,7 +69,7 @@ module Mains
|
||||
interpreter.tick while(interpreter.instruction)
|
||||
saved_in = interpreter.std_reg(:saved_message)
|
||||
assert_equal Parfait::Message , interpreter.get_register(saved_in).class
|
||||
ret = interpreter.get_register(interpreter.std_reg(:syscall_1))
|
||||
ret = interpreter.get_sys_return
|
||||
puts "Interpret #{interpreter.stdout} #{ret}" if ENV["TEST_ARM"] == "DEBUG"
|
||||
return ret , interpreter.stdout
|
||||
end
|
||||
|
@ -54,5 +54,20 @@ module Parfait
|
||||
assert_equal 33 , addr.value
|
||||
end
|
||||
end
|
||||
|
||||
class TrueTest < MiniTest::Test
|
||||
def test_true
|
||||
assert TrueClass.new
|
||||
end
|
||||
def test_set
|
||||
tru = TrueClass.new
|
||||
assert_equal 20 , tru.set_internal_word( Integer.integer_index , 20 )
|
||||
assert_equal 20 , tru.get_internal_word( Integer.integer_index )
|
||||
end
|
||||
def test_get_true
|
||||
assert_equal 1 , TrueClass.new.get_internal_word( Integer.integer_index )
|
||||
end
|
||||
def test_get_false
|
||||
assert_equal 0 , FalseClass.new.get_internal_word( Integer.integer_index )
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -38,6 +38,10 @@ module Risc
|
||||
def test_pos
|
||||
assert_equal 1 , @interpreter.clock
|
||||
end
|
||||
def test_return_value
|
||||
@interpreter.run_all
|
||||
assert_equal 5 , @interpreter.get_sys_return
|
||||
end
|
||||
end
|
||||
class TestInterpreterTicks < MiniTest::Test
|
||||
include Ticker
|
||||
@ -98,7 +102,7 @@ module Risc
|
||||
def test_tick_15 #more than a binary code worth
|
||||
15.times {@interpreter.tick}
|
||||
end
|
||||
class TestInterpreterDies #< MiniTest::Test
|
||||
class TestInterpreterDies < MiniTest::Test
|
||||
include Ticker
|
||||
def setup
|
||||
@string_input = as_main("random.call")
|
||||
|
Reference in New Issue
Block a user