Merge branch 'master' of github.com:ruby-x/rubyx
This commit is contained in:
commit
a758d610d6
@ -13,7 +13,8 @@ module Parfait
|
||||
# Object length is measured in non-type cells though
|
||||
|
||||
class Word < Data8
|
||||
attr_reader :char_length , :next_word
|
||||
attr_reader :char_length ,:next_word
|
||||
|
||||
|
||||
def self.type_length
|
||||
3 # 0 type , 1 char_length , next_word
|
||||
@ -190,6 +191,45 @@ module Parfait
|
||||
Object.padded( 4 * get_type().instance_length + @char_length )
|
||||
end
|
||||
|
||||
def insert(index, other)
|
||||
if index<0
|
||||
index = length+1+index
|
||||
end
|
||||
cpy = Word.new( length+other.length )
|
||||
cpy_ind=0
|
||||
str_ind=0
|
||||
while ( str_ind<index )
|
||||
cpy.set_char(cpy_ind,get_char(str_ind))
|
||||
cpy_ind=cpy_ind+1
|
||||
str_ind=str_ind+1
|
||||
end
|
||||
oth_ind=0
|
||||
while ( oth_ind<other.length )
|
||||
cpy.set_char(cpy_ind,other.get_char(oth_ind))
|
||||
cpy_ind=cpy_ind+1
|
||||
oth_ind=oth_ind+1
|
||||
end
|
||||
while ( str_ind<length )
|
||||
cpy.set_char(cpy_ind,get_char(str_ind))
|
||||
str_ind=str_ind+1
|
||||
cpy_ind=cpy_ind+1
|
||||
end
|
||||
cpy
|
||||
end
|
||||
|
||||
def start_with(other)
|
||||
return false if other.length > self.length
|
||||
s = other.length
|
||||
i=0
|
||||
while i<=s-1
|
||||
if other.get_char(i) != self.get_char(i)
|
||||
return false
|
||||
end
|
||||
i=i+1
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
private
|
||||
def check_length
|
||||
raise "Length out of bounds #{char_length}" if @char_length > 1000
|
||||
|
@ -26,5 +26,23 @@ module Parfait
|
||||
@word.set_char(1 , 32)
|
||||
end
|
||||
end
|
||||
def test_insert_1
|
||||
a = Parfait.new_word("abc")
|
||||
b = Parfait.new_word("d")
|
||||
ans = Parfait.new_word("abcd")
|
||||
assert_equal ans, a.insert(-1,b)
|
||||
end
|
||||
def test_insert_2
|
||||
a1 = Parfait.new_word("what name")
|
||||
b1 = Parfait.new_word("is your ")
|
||||
ans = Parfait.new_word("what is your name")
|
||||
assert_equal ans, a1.insert(5, b1)
|
||||
end
|
||||
def test_insert_3
|
||||
a2 = Parfait.new_word("life")
|
||||
b2 = Parfait.new_word("sad ")
|
||||
ans = Parfait.new_word("sad life")
|
||||
assert_equal ans, a2.insert(0, b2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -6,6 +6,7 @@ module Parfait
|
||||
super
|
||||
@word = Parfait::Word.new(5)
|
||||
end
|
||||
|
||||
def test_len
|
||||
assert_equal 5 , @word.length
|
||||
end
|
||||
@ -83,6 +84,28 @@ module Parfait
|
||||
two = Parfait.new_word("one")
|
||||
assert one.compare(two)
|
||||
end
|
||||
|
||||
def test_start_with1
|
||||
one = Parfait.new_word("Hello")
|
||||
two = Parfait.new_word("Hel")
|
||||
assert one.start_with(two)
|
||||
end
|
||||
def test_start_with2
|
||||
one = Parfait.new_word("Vanilla")
|
||||
two = Parfait.new_word("Va")
|
||||
assert one.start_with(two)
|
||||
end
|
||||
def test_start_with3
|
||||
one = Parfait.new_word("hello")
|
||||
two = Parfait.new_word("hellooo")
|
||||
assert_equal false, one.start_with(two)
|
||||
end
|
||||
def test_start_with4
|
||||
one = Parfait.new_word("bajjs")
|
||||
two = Parfait.new_word("bgjj")
|
||||
assert_equal false, one.start_with(two)
|
||||
end
|
||||
|
||||
def test_first_char
|
||||
one = Parfait.new_word("one")
|
||||
one.set_char(0 , "T".ord)
|
||||
|
Loading…
x
Reference in New Issue
Block a user