diff options
Diffstat (limited to 'tests/stdlib/tstrbasics.nim')
-rw-r--r-- | tests/stdlib/tstrbasics.nim | 126 |
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() |