summary refs log tree commit diff stats
path: root/tests/openarray/tptrarrayderef.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2016-01-18 10:55:23 +0100
committerAraq <rumpf_a@web.de>2016-01-18 10:55:23 +0100
commit55c1f3d30ce5d2ab8745ab2b98a38a605c690a54 (patch)
treed729e8c0d7c929208c84450ad4a449e3eb32491e /tests/openarray/tptrarrayderef.nim
parent68cbb4d2b4bc408e13fc27e6d054e3a0bb98bfb4 (diff)
parent2309975f782bf59b240e3874d5c31b4b299eca5d (diff)
downloadNim-55c1f3d30ce5d2ab8745ab2b98a38a605c690a54.tar.gz
Merge branch 'devel' of https://github.com/nim-lang/Nim into devel
Diffstat (limited to 'tests/openarray/tptrarrayderef.nim')
-rw-r--r--tests/openarray/tptrarrayderef.nim54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/openarray/tptrarrayderef.nim b/tests/openarray/tptrarrayderef.nim
new file mode 100644
index 000000000..1e73be108
--- /dev/null
+++ b/tests/openarray/tptrarrayderef.nim
@@ -0,0 +1,54 @@
+discard """
+  file: "tptrarrayderef.nim"
+  output: "OK"
+"""
+
+var
+  arr = [1,2,3]
+  arrp = addr(arr)
+  sss = @[4,5,6,7]
+  sssp = addr(sss)
+  ra = new(array[3, int])
+  raa = [11,12,13]
+
+#bug #3586
+proc mutate[T](arr:openarray[T], brr: openArray[T]) =
+  for i in 0..arr.len-1:
+    doAssert(arr[i] == brr[i])
+    
+mutate(arr, arr)
+
+#bug #2240
+proc f(a: openarray[int], b: openArray[int]) =
+  for i in 0..a.len-1:
+   doAssert(a[i] == b[i])
+
+var a = [7,8,9]
+var p = addr a
+f(p[], a)
+f(sssp[], sss)
+
+ra[0] = 11
+ra[1] = 12
+ra[2] = 13
+f(ra[], raa)
+
+#bug #2240b
+proc fillBuffer(buf: var openarray[char]) =
+  for i in 0..buf.len-1:
+    buf[i] = chr(i)
+
+proc fillSeqBuffer(b: ref seq[char]) =
+  fillBuffer(b[])
+
+proc getFilledBuffer(sz: int): ref seq[char] =
+  let s : ref seq[char] = new(seq[char])
+  s[] = newSeq[char](sz)
+  fillBuffer(s[])
+  return s
+  
+let aa = getFilledBuffer(3)
+for i in 0..aa[].len-1:
+  doAssert(aa[i] == chr(i))
+  
+echo "OK"
\ No newline at end of file