another +1 bug

This commit is contained in:
Torsten Ruger 2018-05-15 16:25:55 +03:00
parent e237bc625a
commit ab4bc370ed
6 changed files with 20 additions and 6 deletions

View File

@ -141,6 +141,7 @@ module Risc
else
value = object.get_internal_word( index )
end
log.debug "#{@instruction} == #{object}(#{object.class}) (#{value}|#{index})"
set_register( @instruction.register , value )
true
end
@ -153,7 +154,6 @@ module Risc
else
index = get_register(@instruction.index)
end
puts "INDEX #{index} #{value}"
object.set_internal_word( index , value )
trigger(:object_changed, @instruction.array , index)
true

View File

@ -80,8 +80,8 @@ module Vool
mom_receive = @receiver.slot_definition(in_method)
arg_target = [:message , :next_message , :arguments]
args = []
@arguments.each_with_index do |arg , index| # +1 because of type, + 1 beacuse 1-indexed
args << Mom::SlotLoad.new( arg_target + [index+1+1] , arg.slot_definition(in_method))
@arguments.each_with_index do |arg , index| # +1 because of type
args << Mom::SlotLoad.new( arg_target + [index + 1] , arg.slot_definition(in_method))
end
setup << Mom::ArgumentTransfer.new( mom_receive , args )
end

View File

@ -50,7 +50,7 @@ module Risc
assert_equal RegToSlot , produced.next(base+3).class
assert_equal :r1 , produced.next(base+3).register.symbol
assert_equal :r3 , produced.next(base+3).array.symbol
assert_equal 2 , produced.next(base+3).index , "first arg must have index 1"
assert_equal 1 , produced.next(base+3).index , "first arg must have index 1"
end
def test_load_label
produced = produce_body

View File

@ -110,5 +110,19 @@ module Parfait
two = Parfait.new_word("one")
assert one.compare(two)
end
def test_first_char
one = Parfait.new_word("one")
one.set_char(0 , "T".ord)
assert_equal "Tne" , one.to_string
end
def test_sec_char
one = Parfait.new_word("one")
one.set_char(1 , "m".ord)
assert_equal "ome" , one.to_string
end
def test_more_char
one = Parfait.new_word("one")
assert_raises {one.set_char(3 , "s".ord)}
end
end
end

View File

@ -5,7 +5,7 @@ module Risc
include Ticker
def setup
@string_input = as_main("return 'Hello'.get_internal_byte(1)")
@string_input = as_main("return 'Hello'.get_internal_byte(0)")
super
end
def test_chain

View File

@ -5,7 +5,7 @@ module Risc
include Ticker
def setup
@string_input = as_main("return 'Hello'.set_internal_byte(1,75)")
@string_input = as_main("return 'Hello'.set_internal_byte(0,75)")
super
end