diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/exception/testindexerroroutput.nims | 23 | ||||
-rw-r--r-- | tests/exception/tindexerrorformatbounds.nim | 31 | ||||
-rw-r--r-- | tests/misc/tinvalidarrayaccess.nim | 6 | ||||
-rw-r--r-- | tests/misc/tinvalidarrayaccess2.nim | 8 |
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() |