diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2021-03-01 07:51:12 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-01 07:51:12 -0800 |
commit | 0cb02fbbeeba6d4bd526ccf6cfff2eda05990bd5 (patch) | |
tree | 8ee83f3d11f1554daca694baac5d3ece4ee6b9b0 /tests | |
parent | dd6b0f81efe54cbc17a79e5c3d7aa7aaf34357f6 (diff) | |
download | Nim-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.nim | 253 | ||||
-rw-r--r-- | tests/vm/tstring_openarray.nim | 25 |
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() |