1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

string: update string.repeat behavior

Panic if a repeat count is negative.
Return an empty string if a repeat count is zero.
This commit is contained in:
Alexey 2020-02-29 17:25:31 +03:00 committed by GitHub
parent a485533dc9
commit 632a538eb3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 6 deletions

View File

@ -1251,7 +1251,11 @@ pub fn (s string) bytes() []byte {
// repeat returns a new string with a specified number of copies of the string it was called on. // repeat returns a new string with a specified number of copies of the string it was called on.
pub fn (s string) repeat(count int) string { pub fn (s string) repeat(count int) string {
if count <= 1 { if count < 0 {
panic('string.repeat: count is negative: $count')
} else if count == 0 {
return ''
} else if count == 1 {
return s return s
} }
mut ret := malloc(s.len * count + 1) mut ret := malloc(s.len * count + 1)

View File

@ -603,11 +603,15 @@ fn test_limit() {
} }
fn test_repeat() { fn test_repeat() {
s := 'V! ' s1 := 'V! '
assert s.repeat(5) == 'V! V! V! V! V! ' assert s1.repeat(5) == 'V! V! V! V! V! '
assert s.repeat(1) == s assert s1.repeat(1) == s1
assert s.repeat(0) == s assert s1.repeat(0) == ''
assert s.repeat(-1) == s s2 := ''
assert s2.repeat(5) == s2
assert s2.repeat(1) == s2
assert s2.repeat(0) == s2
// TODO Add test for negative values
} }
fn test_raw() { fn test_raw() {