summary refs log tree commit diff stats
path: root/tests/collections
diff options
context:
space:
mode:
authorPeter Mora <morapeter@gmail.com>2015-10-05 22:41:54 +0200
committerPeter Mora <morapeter@gmail.com>2015-10-05 22:42:22 +0200
commit75097e2981e470197fa5649557875a9f60385973 (patch)
tree07f91724132a978ad267f8e9a920fa8d14ee255d /tests/collections
parent0a8a2070d01489d036ececa78c87ef94325d3e9d (diff)
downloadNim-75097e2981e470197fa5649557875a9f60385973.tar.gz
sequtils related changes
Diffstat (limited to 'tests/collections')
-rw-r--r--tests/collections/tapply.nim7
-rw-r--r--tests/collections/tmapit.nim28
2 files changed, 35 insertions, 0 deletions
diff --git a/tests/collections/tapply.nim b/tests/collections/tapply.nim
new file mode 100644
index 000000000..403321ce1
--- /dev/null
+++ b/tests/collections/tapply.nim
@@ -0,0 +1,7 @@
+import sequtils
+
+var x = @[1, 2, 3]
+x.apply(proc(x: var int) = x = x+10)
+x.apply(proc(x: int): int = x+100)
+x.applyIt(it+5000)
+doAssert x == @[5111, 5112, 5113]
diff --git a/tests/collections/tmapit.nim b/tests/collections/tmapit.nim
new file mode 100644
index 000000000..067561882
--- /dev/null
+++ b/tests/collections/tmapit.nim
@@ -0,0 +1,28 @@
+import sequtils
+
+var x = @[1, 2, 3]
+# This mapIt call will run with preallocation because ``len`` is available.
+var y = x.mapIt($(it+10))
+doAssert y == @["11", "12", "13"]
+
+type structureWithoutLen = object
+  a: array[5, int]
+
+iterator items(s: structureWithoutLen): int {.inline.} =
+  yield s.a[0]
+  yield s.a[1]
+  yield s.a[2]
+  yield s.a[3]
+  yield s.a[4]
+
+var st: structureWithoutLen
+st.a[0] = 0
+st.a[1] = 1
+st.a[2] = 2
+st.a[3] = 3
+st.a[4] = 4
+
+# this will run without preallocating the result
+# since ``len`` is not available
+var r = st.mapIt($(it+10))
+doAssert r == @["10", "11", "12", "13", "14"]