summary refs log tree commit diff stats
path: root/tests/stdlib/tstrbasics.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/stdlib/tstrbasics.nim')
-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()