diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2018-04-28 15:13:44 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-04-28 15:13:44 +0200 |
commit | f64f9e50cca38db24f68ee70d979fd55b1c49868 (patch) | |
tree | 19681dd716159a57c6863c182c85920755c6c3a3 /tests/system | |
parent | 13a380bca6d64310eb1383434519b153f1b48e57 (diff) | |
download | Nim-f64f9e50cca38db24f68ee70d979fd55b1c49868.tar.gz |
correct comparisons for nil strings/seqs
Diffstat (limited to 'tests/system')
-rw-r--r-- | tests/system/toString.nim | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/system/toString.nim b/tests/system/toString.nim index ea9d6b05b..37c678a74 100644 --- a/tests/system/toString.nim +++ b/tests/system/toString.nim @@ -51,3 +51,59 @@ import strutils let arr = ['H','e','l','l','o',' ','W','o','r','l','d','!','\0'] doAssert $arr == "['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\\x00']" doAssert $cstring(unsafeAddr arr) == "Hello World!" + +proc takes(c: cstring) = + doAssert c == "" + +proc testm() = + var x: string + # nil is mapped to "": + takes(x) + +testm() + +# nil tests +var xx: seq[string] +var yy: string +doAssert xx == @[] +doAssert yy == "" + +proc bar(arg: cstring): void = + doAssert arg[0] == '\0' + +proc baz(arg: openarray[char]): void = + doAssert arg.len == 0 + +proc stringCompare(): void = + var a,b,c,d,e,f,g: string + a.add 'a' + doAssert a == "a" + b.add "bee" + doAssert b == "bee" + b.add g + doAssert b == "bee" + c.add 123.456 + doAssert c == "123.456" + d.add 123456 + doAssert d == "123456" + + doAssert e == "" + doAssert "" == e + doAssert nil == e + doAssert e == nil + doAssert f == g + doAssert "" == "" + doAssert "" == nil + doAssert nil == "" + + g.setLen(10) + doAssert g == "\0\0\0\0\0\0\0\0\0\0" + doAssert "" != "\0\0\0\0\0\0\0\0\0\0" + + var nilstring: string + bar(nilstring) + baz(nilstring) + +stringCompare() +static: + stringCompare() \ No newline at end of file |