summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorTimothee Cour <timothee.cour2@gmail.com>2021-03-01 07:51:12 -0800
committerGitHub <noreply@github.com>2021-03-01 07:51:12 -0800
commit0cb02fbbeeba6d4bd526ccf6cfff2eda05990bd5 (patch)
tree8ee83f3d11f1554daca694baac5d3ece4ee6b9b0 /tests
parentdd6b0f81efe54cbc17a79e5c3d7aa7aaf34357f6 (diff)
downloadNim-0cb02fbbeeba6d4bd526ccf6cfff2eda05990bd5.tar.gz
add overload `add(a: var string, b: openArray[char])` (#15951)
Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
Diffstat (limited to 'tests')
-rw-r--r--tests/stdlib/tstrbasics.nim253
-rw-r--r--tests/vm/tstring_openarray.nim25
2 files changed, 145 insertions, 133 deletions
diff --git a/tests/stdlib/tstrbasics.nim b/tests/stdlib/tstrbasics.nim
index 4dd232351..8a3b22889 100644
--- a/tests/stdlib/tstrbasics.nim
+++ b/tests/stdlib/tstrbasics.nim
@@ -1,126 +1,139 @@
 discard """
   targets: "c cpp js"
+  matrix: "--gc:refc; --gc:arc"
 """
 
 import std/[strbasics, sugar]
 
-
-proc teststrip() =
-  var a = "  vhellov   "
-  strip(a)
-  doAssert a == "vhellov"
-
-  a = "  vhellov   "
-  a.strip(leading = false)
-  doAssert a == "  vhellov"
-
-  a = "  vhellov   "
-  a.strip(trailing = false)
-  doAssert a == "vhellov   "
-
-  a.strip()
-  a.strip(chars = {'v'})
-  doAssert a == "hello"
-
-  a = "  vhellov   "
-  a.strip()
-  a.strip(leading = false, chars = {'v'})
-  doAssert a == "vhello"
-
-  var c = "blaXbla"
-  c.strip(chars = {'b', 'a'})
-  doAssert c == "laXbl"
-  c = "blaXbla"
-  c.strip(chars = {'b', 'a', 'l'})
-  doAssert c == "X"
-
-  block:
-    var a = "xxxxxx"
-    a.strip(chars={'x'})
-    doAssert a.len == 0
-
-  block:
-    var a = "x"
-    a.strip(chars={'x'})
-    doAssert a.len == 0
-  
-  block:
-    var a = "x"
-    a.strip(chars={'1'})
-    doAssert a.len == 1
-
-  block:
-    var a = ""
-    a.strip(chars={'x'})
-    doAssert a.len == 0
-
-  block:
-    var a = "xxx xxx"
-    a.strip(chars={'x'})
-    doAssert a == " "
-
-  block:
-    var a = "xxx  wind"
-    a.strip(chars={'x'})
-    doAssert a == "  wind"
-
-  block:
-    var a = "xxx  iii"
-    a.strip(chars={'i'})
-    doAssert a == "xxx  "
-
-  block:
-    var a = "xxx  iii"
-    doAssert a.dup(strip(chars = {'i'})) == "xxx  "
-    doAssert a.dup(strip(chars = {' '})) == "xxx  iii"
-    doAssert a.dup(strip(chars = {'x'})) == "  iii"
-    doAssert a.dup(strip(chars = {'x', ' '})) == "iii"
-    doAssert a.dup(strip(chars = {'x', 'i'})) == "  "
-    doAssert a.dup(strip(chars = {'x', 'i', ' '})).len == 0
-
-  block:
-    var a = "x  i"
-    doAssert a.dup(strip(chars = {'i'})) == "x  "
-    doAssert a.dup(strip(chars = {' '})) == "x  i"
-    doAssert a.dup(strip(chars = {'x'})) == "  i"
-    doAssert a.dup(strip(chars = {'x', ' '})) == "i"
-    doAssert a.dup(strip(chars = {'x', 'i'})) == "  "
-    doAssert a.dup(strip(chars = {'x', 'i', ' '})).len == 0
-
-  block:
-    var a = ""
-    doAssert a.dup(strip(chars = {'i'})).len == 0
-    doAssert a.dup(strip(chars = {' '})).len == 0
-    doAssert a.dup(strip(chars = {'x'})).len == 0
-    doAssert a.dup(strip(chars = {'x', ' '})).len == 0
-    doAssert a.dup(strip(chars = {'x', 'i'})).len == 0
-    doAssert a.dup(strip(chars = {'x', 'i', ' '})).len == 0
-
-  block:
-    var a = " "
-    doAssert a.dup(strip(chars = {'i'})) == " "
-    doAssert a.dup(strip(chars = {' '})).len == 0
-    doAssert a.dup(strip(chars = {'x'})) == " "
-    doAssert a.dup(strip(chars = {'x', ' '})).len == 0
-    doAssert a.dup(strip(chars = {'x', 'i'})) == " "
-    doAssert a.dup(strip(chars = {'x', 'i', ' '})).len == 0
-
-
-  block:
-    var a = "Hello, Nim!"
-    doassert a.dup(setSlice(7 .. 9)) == "Nim"
-    doAssert a.dup(setSlice(0 .. 0)) == "H"
-    doAssert a.dup(setSlice(0 .. 1)) == "He"
-    doAssert a.dup(setSlice(0 .. 10)) == a
-    doAssert a.dup(setSlice(1 .. 0)).len == 0
-    doAssert a.dup(setSlice(20 .. -1)).len == 0
-
-
-    doAssertRaises(AssertionDefect):
-      discard a.dup(setSlice(-1 .. 1))
-
-    doAssertRaises(AssertionDefect):
-      discard a.dup(setSlice(1 .. 11))
-
-static: teststrip()
-teststrip()
+proc main() =
+  when not defined(gcArc): # pending bug #17173
+    block: # strip
+      var a = "  vhellov   "
+      strip(a)
+      doAssert a == "vhellov"
+
+      a = "  vhellov   "
+      a.strip(leading = false)
+      doAssert a == "  vhellov"
+
+      a = "  vhellov   "
+      a.strip(trailing = false)
+      doAssert a == "vhellov   "
+
+      a.strip()
+      a.strip(chars = {'v'})
+      doAssert a == "hello"
+
+      a = "  vhellov   "
+      a.strip()
+      a.strip(leading = false, chars = {'v'})
+      doAssert a == "vhello"
+
+      var c = "blaXbla"
+      c.strip(chars = {'b', 'a'})
+      doAssert c == "laXbl"
+      c = "blaXbla"
+      c.strip(chars = {'b', 'a', 'l'})
+      doAssert c == "X"
+
+      block:
+        var a = "xxxxxx"
+        a.strip(chars={'x'})
+        doAssert a.len == 0
+
+      block:
+        var a = "x"
+        a.strip(chars={'x'})
+        doAssert a.len == 0
+      
+      block:
+        var a = "x"
+        a.strip(chars={'1'})
+        doAssert a.len == 1
+
+      block:
+        var a = ""
+        a.strip(chars={'x'})
+        doAssert a.len == 0
+
+      block:
+        var a = "xxx xxx"
+        a.strip(chars={'x'})
+        doAssert a == " "
+
+      block:
+        var a = "xxx  wind"
+        a.strip(chars={'x'})
+        doAssert a == "  wind"
+
+      block:
+        var a = "xxx  iii"
+        a.strip(chars={'i'})
+        doAssert a == "xxx  "
+
+      block:
+        var a = "xxx  iii"
+        doAssert a.dup(strip(chars = {'i'})) == "xxx  "
+        doAssert a.dup(strip(chars = {' '})) == "xxx  iii"
+        doAssert a.dup(strip(chars = {'x'})) == "  iii"
+        doAssert a.dup(strip(chars = {'x', ' '})) == "iii"
+        doAssert a.dup(strip(chars = {'x', 'i'})) == "  "
+        doAssert a.dup(strip(chars = {'x', 'i', ' '})).len == 0
+
+      block:
+        var a = "x  i"
+        doAssert a.dup(strip(chars = {'i'})) == "x  "
+        doAssert a.dup(strip(chars = {' '})) == "x  i"
+        doAssert a.dup(strip(chars = {'x'})) == "  i"
+        doAssert a.dup(strip(chars = {'x', ' '})) == "i"
+        doAssert a.dup(strip(chars = {'x', 'i'})) == "  "
+        doAssert a.dup(strip(chars = {'x', 'i', ' '})).len == 0
+
+      block:
+        var a = ""
+        doAssert a.dup(strip(chars = {'i'})).len == 0
+        doAssert a.dup(strip(chars = {' '})).len == 0
+        doAssert a.dup(strip(chars = {'x'})).len == 0
+        doAssert a.dup(strip(chars = {'x', ' '})).len == 0
+        doAssert a.dup(strip(chars = {'x', 'i'})).len == 0
+        doAssert a.dup(strip(chars = {'x', 'i', ' '})).len == 0
+
+      block:
+        var a = " "
+        doAssert a.dup(strip(chars = {'i'})) == " "
+        doAssert a.dup(strip(chars = {' '})).len == 0
+        doAssert a.dup(strip(chars = {'x'})) == " "
+        doAssert a.dup(strip(chars = {'x', ' '})).len == 0
+        doAssert a.dup(strip(chars = {'x', 'i'})) == " "
+        doAssert a.dup(strip(chars = {'x', 'i', ' '})).len == 0
+
+    block: # setSlice
+      var a = "Hello, Nim!"
+      doassert a.dup(setSlice(7 .. 9)) == "Nim"
+      doAssert a.dup(setSlice(0 .. 0)) == "H"
+      doAssert a.dup(setSlice(0 .. 1)) == "He"
+      doAssert a.dup(setSlice(0 .. 10)) == a
+      doAssert a.dup(setSlice(1 .. 0)).len == 0
+      doAssert a.dup(setSlice(20 .. -1)).len == 0
+
+      doAssertRaises(AssertionDefect):
+        discard a.dup(setSlice(-1 .. 1))
+
+      doAssertRaises(AssertionDefect):
+        discard a.dup(setSlice(1 .. 11))
+
+  block: # add
+    var a0 = "hi"
+    var b0 = "foobar"
+    when nimvm:
+      discard # pending bug #15952
+    else:
+      a0.add b0.toOpenArray(1,3)
+      doAssert a0 == "hioob"
+    proc fn(c: openArray[char]): string =
+      result.add c
+    doAssert fn("def") == "def"
+    doAssert fn(['d','\0', 'f'])[2] == 'f'
+
+static: main()
+main()
diff --git a/tests/vm/tstring_openarray.nim b/tests/vm/tstring_openarray.nim
index 1b8a1304c..9318344f8 100644
--- a/tests/vm/tstring_openarray.nim
+++ b/tests/vm/tstring_openarray.nim
@@ -12,16 +12,16 @@ proc set_all[T](s: var openArray[T]; val: T) =
   for i in 0..<s.len:
     s[i] = val
 
-proc test() =
-    var a0 = "hello_world"
-    var a1 = [1,2,3,4,5,6,7,8,9]
-    var a2 = @[1,2,3,4,5,6,7,8,9]
-    a0.set_all('i')
-    a1.set_all(4)
-    a2.set_all(4)
-    doAssert a0 == "iiiiiiiiiii"
-    doAssert a1 == [4,4,4,4,4,4,4,4,4]
-    doAssert a2 == @[4,4,4,4,4,4,4,4,4]
+proc main() =
+  var a0 = "hello_world"
+  var a1 = [1,2,3,4,5,6,7,8,9]
+  var a2 = @[1,2,3,4,5,6,7,8,9]
+  a0.set_all('i')
+  a1.set_all(4)
+  a2.set_all(4)
+  doAssert a0 == "iiiiiiiiiii"
+  doAssert a1 == [4,4,4,4,4,4,4,4,4]
+  doAssert a2 == @[4,4,4,4,4,4,4,4,4]
 
 const constval0 = "hello".map(proc(x: char): char = x)
 const constval1 = [1,2,3,4].map(proc(x: int): int = x)
@@ -29,6 +29,5 @@ const constval1 = [1,2,3,4].map(proc(x: int): int = x)
 doAssert("hello".map(proc(x: char): char = x) == constval0)
 doAssert([1,2,3,4].map(proc(x: int): int = x) == constval1)
 
-test()
-static:
-    test()
+static: main()
+main()