summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/exception/testindexerroroutput.nims23
-rw-r--r--tests/exception/tindexerrorformatbounds.nim31
-rw-r--r--tests/misc/tinvalidarrayaccess.nim6
-rw-r--r--tests/misc/tinvalidarrayaccess2.nim8
4 files changed, 58 insertions, 10 deletions
diff --git a/tests/exception/testindexerroroutput.nims b/tests/exception/testindexerroroutput.nims
new file mode 100644
index 000000000..e282f14b4
--- /dev/null
+++ b/tests/exception/testindexerroroutput.nims
@@ -0,0 +1,23 @@
+mode = ScriptMode.Verbose
+
+case paramStr(3):
+  of "test1":
+    #543
+    block:
+      let s = "abc"
+      discard s[len(s)]
+  of "test2":
+    #537
+    block:
+      var s = "abc"
+      s[len(s)] = 'd'
+  of "test3":
+    #588
+    block:
+      let arr = ['a', 'b', 'c']
+      discard arr[len(arr)]
+  of "test4":
+    #588
+    block:
+      var arr = ['a', 'b', 'c']
+      arr[len(arr)] = 'd'
diff --git a/tests/exception/tindexerrorformatbounds.nim b/tests/exception/tindexerrorformatbounds.nim
new file mode 100644
index 000000000..7563c5ffa
--- /dev/null
+++ b/tests/exception/tindexerrorformatbounds.nim
@@ -0,0 +1,31 @@
+import os, osproc, strutils
+
+const characters = "abcdefghijklmnopqrstuvwxyz"
+var s: string
+
+# # chcks.nim:23
+# # test formatErrorIndexBound returns correct bounds
+block:
+  s = characters
+  try:
+    discard s[0..999]
+  except IndexError:
+    let msg = getCurrentExceptionMsg()
+    let expected = "index $# not in 0 .. $#" % [$len(s), $(len(s)-1)]
+    doAssert msg.contains expected, $(msg, expected)
+
+block:
+  try:
+    discard paramStr(999)
+  except IndexError:
+    let msg = getCurrentExceptionMsg()
+    let expected = "index 999 not in 0 .. 0"
+    doAssert msg.contains expected, $(msg, expected)
+
+block:
+  const nim = getCurrentCompilerExe()
+  for i in 1..4:
+    let (outp, errC) = execCmdEx("$# e tests/exception/testindexerroroutput.nims test$#" % [nim, $i])
+    let expected = "index 3 not in 0 .. 2"
+    doAssert errC != 0
+    doAssert outp.contains expected, $(outp, errC, expected, i)
diff --git a/tests/misc/tinvalidarrayaccess.nim b/tests/misc/tinvalidarrayaccess.nim
index ab44d98e8..f8bce45ef 100644
--- a/tests/misc/tinvalidarrayaccess.nim
+++ b/tests/misc/tinvalidarrayaccess.nim
@@ -1,14 +1,14 @@
 discard """
-  errormsg: "index out of bounds: (a: 0) <= (i: 2) <= (b: 1) "
+  errormsg: "index 2 not in 0 .. 1"
   line: 18
 """
-
 block:
   try:
     let a = @[1,2]
     echo a[3]
   except Exception as e:
-    doAssert e.msg == "index out of bounds: (i:3) <= (n:1) "
+    doAssert e.msg == "index 3 not in 0 .. 1"
+      # note: this is not being tested, because the CT error happens before
 
 block:
   type TTestArr = array[0..1, int16]
diff --git a/tests/misc/tinvalidarrayaccess2.nim b/tests/misc/tinvalidarrayaccess2.nim
index a791dc4e7..0a0703834 100644
--- a/tests/misc/tinvalidarrayaccess2.nim
+++ b/tests/misc/tinvalidarrayaccess2.nim
@@ -1,5 +1,5 @@
 discard """
-  errormsg: "index out of bounds: (a: 0) <= (i: 3) <= (b: 1) "
+  errormsg: "index 3 not in 0 .. 1"
   line: 9
 """
 
@@ -8,9 +8,3 @@ discard """
 let a = [1,2]
 echo a[3]
 
-when false:
-  # TOOD: this case is not yet handled, giving: "index out of bounds"
-  proc fun()=
-    let a = @[1,2]
-    echo a[3]
-  static: fun()