5fe0ba06ab
moving on to getting mom to work and can’t have both interpreter and elf broke, about 100 tests went
68 lines
2.2 KiB
Ruby
68 lines
2.2 KiB
Ruby
require_relative "helper"
|
|
|
|
module Risc
|
|
class TestInterpretRegToByte < MiniTest::Test
|
|
include Ticker
|
|
|
|
def setup
|
|
@string_input = <<HERE
|
|
class Space
|
|
int main()
|
|
"Hello".set_internal_byte(1,104)
|
|
end
|
|
end
|
|
HERE
|
|
@input = s(:statements, s(:call,
|
|
:set_internal_byte ,
|
|
s(:arguments, s(:int, 1), s(:int, 104)),
|
|
s(:receiver, s(:string, "Hello"))))
|
|
super
|
|
end
|
|
|
|
def pest_chain
|
|
#show_ticks # get output of what is
|
|
check_chain [Branch, Label, LoadConstant, SlotToReg, RegToSlot,
|
|
LoadConstant, RegToSlot, FunctionCall, Label, SlotToReg,
|
|
LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant,
|
|
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
|
|
LoadConstant, SlotToReg, RegToSlot, LoadConstant, RegToSlot,
|
|
RiscTransfer, FunctionCall, Label, LoadConstant, SlotToReg,
|
|
RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
|
|
SlotToReg, RegToByte, Label, FunctionReturn, RiscTransfer,
|
|
SlotToReg, SlotToReg, LoadConstant, SlotToReg, RegToSlot,
|
|
Label, FunctionReturn, RiscTransfer, Syscall, NilClass]
|
|
end
|
|
|
|
def pest_branch
|
|
was = @interpreter.instruction
|
|
assert_equal Branch , ticks(1).class
|
|
assert was != @interpreter.instruction
|
|
assert @interpreter.instruction , "should have gone to next instruction"
|
|
end
|
|
def pest_load
|
|
assert_equal LoadConstant , ticks(3).class
|
|
assert_equal Parfait::Space , @interpreter.get_register(:r2).class
|
|
assert_equal :r2, @interpreter.instruction.array.symbol
|
|
end
|
|
def pest_get
|
|
assert_equal SlotToReg , ticks(4).class
|
|
assert @interpreter.get_register( :r1 )
|
|
assert Integer , @interpreter.get_register( :r1 ).class
|
|
end
|
|
def pest_call
|
|
assert_equal FunctionCall , ticks(8).class
|
|
end
|
|
def pest_exit
|
|
done = ticks(50)
|
|
assert_equal NilClass , done.class
|
|
end
|
|
|
|
def pest_reg_to_byte
|
|
done = ticks(37)
|
|
assert_equal RegToByte , done.class
|
|
assert_equal "h".ord , @interpreter.get_register(done.register)
|
|
end
|
|
|
|
end
|
|
end
|