Fix strings.index_any on small strings

This commit is contained in:
Ricardo Silva
2021-09-07 18:33:59 +01:00
parent 1dffd4ea3d
commit f6d496c81d
2 changed files with 32 additions and 3 deletions

View File

@@ -479,7 +479,7 @@ last_index :: proc(s, substr: string) -> int {
return -1
}
// index_any returns the index of the first char of `chars` found in `s`. -1 if not found.
index_any :: proc(s, chars: string) -> int {
if chars == "" {
return -1
@@ -504,8 +504,8 @@ index_any :: proc(s, chars: string) -> int {
}
}
for c, i in chars {
if index_rune(chars, c) >= 0 {
for c in chars {
if i := index_rune(s, c); i >= 0 {
return i
}
}

View File

@@ -0,0 +1,29 @@
package test_core_image
import "core:strings"
import "core:testing"
@test
test_index_any_small_string_not_found :: proc(t: ^testing.T) {
index := strings.index_any(".", "/:\"")
testing.log(t, index)
testing.expect(t, index == -1, "index_any should be negative")
}
@test
test_index_any_larger_string_not_found :: proc(t: ^testing.T) {
index := strings.index_any("aaaaaaaa.aaaaaaaa", "/:\"")
testing.expect(t, index == -1, "index_any should be negative")
}
@test
test_index_any_small_string_found :: proc(t: ^testing.T) {
index := strings.index_any(".", "/:.\"")
testing.expect(t, index == 0, "index_any should be 0")
}
@test
test_index_any_larger_string_found :: proc(t: ^testing.T) {
index := strings.index_any("aaaaaaaa:aaaaaaaa", "/:\"")
testing.expect(t, index == 8, "index_any should be 8")
}