summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorn5m <72841454+n5m@users.noreply.github.com>2022-09-26 19:39:22 +0000
committerGitHub <noreply@github.com>2022-09-26 15:39:22 -0400
commit9ca88a18897f5ebc59d6a67dfc7f9a8de8fa35ce (patch)
tree4315e5f7c17bc7b13982d979cf072d6a7be9e551 /tests
parentb213913dcb767a86a5669c1c24ad5c7b1d5a8de8 (diff)
downloadNim-9ca88a18897f5ebc59d6a67dfc7f9a8de8fa35ce.tar.gz
fix #18128 rfind on empty needle returns rightmost index (#20430)
rfind on empty needle returns haystack len
Diffstat (limited to 'tests')
-rw-r--r--tests/stdlib/tstrutils.nim30
1 files changed, 17 insertions, 13 deletions
diff --git a/tests/stdlib/tstrutils.nim b/tests/stdlib/tstrutils.nim
index e17277ef2..9ea4d72f2 100644
--- a/tests/stdlib/tstrutils.nim
+++ b/tests/stdlib/tstrutils.nim
@@ -360,19 +360,23 @@ template main() =
     doAssert "///".rfind("//", start=3) == -1
 
     # searching for empty string
-    doAssert "".rfind("") == -1
-    doAssert "abc".rfind("") == -1
-    doAssert "abc".rfind("", start=1) == -1
-    doAssert "abc".rfind("", start=2) == -1
-    doAssert "abc".rfind("", start=3) == -1
-    doAssert "abc".rfind("", start=4) == -1
-    doAssert "abc".rfind("", start=400) == -1
-
-    doAssert "abc".rfind("", start=1, last=3) == -1
-    doAssert "abc".rfind("", start=1, last=2) == -1
-    doAssert "abc".rfind("", start=1, last=1) == -1
-    doAssert "abc".rfind("", start=1, last=0) == -1
-    doAssert "abc".rfind("", start=1, last = -1) == -1
+    doAssert "".rfind("") == 0
+    doAssert "abc".rfind("") == 3
+    doAssert "abc".rfind("", start=1) == 3
+    doAssert "abc".rfind("", start=2) == 3
+    doAssert "abc".rfind("", start=3) == 3
+    doAssert "abc".rfind("", start=4) == 4
+    doAssert "abc".rfind("", start=400) == 400
+
+    doAssert "abc".rfind("", start=1, last=3) == 3
+    doAssert "abc".rfind("", start=1, last=2) == 2
+    doAssert "abc".rfind("", start=1, last=1) == 1
+    # This returns the start index instead of the last index
+    # because start > last
+    doAssert "abc".rfind("", start=1, last=0) == 1
+    doAssert "abc".rfind("", start=1, last = -1) == 3
+    
+    doAssert "abc".rfind("", start=0, last=0) == 0
 
     # when last <= start, searching for non-empty string
     block: