get/set word for binary code
This commit is contained in:
parent
25c5b6dbbd
commit
a9d5e144ca
@ -14,7 +14,8 @@ module Parfait
|
|||||||
if total_size > self.data_length
|
if total_size > self.data_length
|
||||||
@next = BinaryCode.new(total_size - data_length) #one for the jump
|
@next = BinaryCode.new(total_size - data_length) #one for the jump
|
||||||
end
|
end
|
||||||
puts "Init with #{total_size} for #{object_id}"
|
#puts "Init with #{total_size} for #{object_id}"
|
||||||
|
(1..(data_length+1)).each{ |index| set_word(index , 0) }
|
||||||
end
|
end
|
||||||
def to_s
|
def to_s
|
||||||
"BinaryCode #{}"
|
"BinaryCode #{}"
|
||||||
@ -25,6 +26,22 @@ module Parfait
|
|||||||
def byte_length
|
def byte_length
|
||||||
4*data_length
|
4*data_length
|
||||||
end
|
end
|
||||||
|
def set_word(index , word)
|
||||||
|
raise "invalid index #{index}" if index < 1
|
||||||
|
if index > data_length + 1
|
||||||
|
raise "invalid index #{index}" unless @next
|
||||||
|
@next.set_word( index - data_length , word)
|
||||||
|
end
|
||||||
|
set_internal_word(index + 2 , word)
|
||||||
|
end
|
||||||
|
def get_word(index)
|
||||||
|
raise "invalid index #{index}" if index < 1
|
||||||
|
if index > data_length + 1
|
||||||
|
raise "invalid index #{index}" unless @next
|
||||||
|
return @next.get_word( index - data_length)
|
||||||
|
end
|
||||||
|
get_internal_word(index + 2)
|
||||||
|
end
|
||||||
def set_char(index , char)
|
def set_char(index , char)
|
||||||
if index >= byte_length
|
if index >= byte_length
|
||||||
puts "Pass it on #{index} for #{object_id}"
|
puts "Pass it on #{index} for #{object_id}"
|
||||||
|
@ -51,5 +51,18 @@ module Parfait
|
|||||||
@code = BinaryCode.new(16)
|
@code = BinaryCode.new(16)
|
||||||
assert @code.set_char(56 , 1)
|
assert @code.set_char(56 , 1)
|
||||||
end
|
end
|
||||||
|
def test_nilled
|
||||||
|
assert_equal 0 , @code.get_word(1)
|
||||||
|
assert_equal 0 , @code.get_word(14)
|
||||||
|
end
|
||||||
|
def test_get_set_self
|
||||||
|
@code.set_word(10,1)
|
||||||
|
assert_equal 1 , @code.get_word(10)
|
||||||
|
end
|
||||||
|
def test_get_set_next
|
||||||
|
@code = BinaryCode.new(20)
|
||||||
|
@code.set_word(20,1)
|
||||||
|
assert_equal 1 , @code.get_word(20)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user