Merge pull request #40 from deepigarg/master

Issue #32 Implemented Insert method
This commit is contained in:
Torsten Rüger 2020-03-28 19:30:21 +02:00 committed by GitHub
commit 4e99938f3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 0 deletions

View File

@ -190,6 +190,33 @@ module Parfait
def padded_length def padded_length
Object.padded( 4 * get_type().instance_length + @char_length ) Object.padded( 4 * get_type().instance_length + @char_length )
end 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) def start_with(other)
return false if other.length > self.length return false if other.length > self.length
s = other.length s = other.length
@ -202,6 +229,7 @@ module Parfait
end end
return true return true
end end
private private
def check_length def check_length
raise "Length out of bounds #{char_length}" if @char_length > 1000 raise "Length out of bounds #{char_length}" if @char_length > 1000

View File

@ -26,5 +26,23 @@ module Parfait
@word.set_char(1 , 32) @word.set_char(1 , 32)
end end
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
end end