mirror of
https://github.com/odin-lang/Odin.git
synced 2026-02-13 06:43:35 +00:00
Fix strings.index_any on small strings
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
29
tests/core/strings/test_core_strings.odin
Normal file
29
tests/core/strings/test_core_strings.odin
Normal 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")
|
||||
}
|
||||
Reference in New Issue
Block a user