summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorflywind <xzsflywind@gmail.com>2021-02-24 03:22:47 -0600
committerGitHub <noreply@github.com>2021-02-24 10:22:47 +0100
commit3f38f8fbb7c0dd3af641961ed98ef0e67ea91f3c (patch)
treef0ad53e014bcfb3bc321287c341198c9d349c9a5 /tests
parent46bd222c89c57217d1d4738f84f52de94f092c1d (diff)
downloadNim-3f38f8fbb7c0dd3af641961ed98ef0e67ea91f3c.tar.gz
add strbasics.strip (#16280)
Diffstat (limited to 'tests')
-rw-r--r--tests/stdlib/tstrbasics.nim126
1 files changed, 126 insertions, 0 deletions
diff --git a/tests/stdlib/tstrbasics.nim b/tests/stdlib/tstrbasics.nim
new file mode 100644
index 000000000..4dd232351
--- /dev/null
+++ b/tests/stdlib/tstrbasics.nim
@@ -0,0 +1,126 @@
+discard """
+  targets: "c cpp js"
+"""
+
+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()