summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2013-02-18 17:23:26 +0100
committerAraq <rumpf_a@web.de>2013-02-18 17:23:26 +0100
commitd15981adbcfe507f58f3cc6167272d8af363bbf4 (patch)
treebac2792cc435641353050635bc6d9a8a84733732 /tests
parent8e9b39084c4ed378ef98d3e2d6cc958f976862b4 (diff)
downloadNim-d15981adbcfe507f58f3cc6167272d8af363bbf4.tar.gz
system.fields|fieldPairs for objects
Diffstat (limited to 'tests')
-rw-r--r--tests/run/tfielditerator2.nim64
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/run/tfielditerator2.nim b/tests/run/tfielditerator2.nim
new file mode 100644
index 000000000..76fa568f2
--- /dev/null
+++ b/tests/run/tfielditerator2.nim
@@ -0,0 +1,64 @@
+discard """
+  output: '''
+a char: true
+a char: false
+an int: 5
+an int: 6
+a string: abc
+false
+true
+true
+false
+true
+a: a
+b: b
+x: 5
+y: 6
+z: abc
+myDisc: enC
+c: Z
+enC
+Z
+'''
+"""
+
+type
+  TMyObj = object
+    a, b: char
+    x, y: int
+    z: string
+    
+  TEnum = enum enA, enB, enC
+  TMyCaseObj = object
+    case myDisc: TEnum
+    of enA: a: int
+    of enB: b: string
+    of enC: c: char
+
+proc p(x: char) = echo "a char: ", x <= 'a'
+proc p(x: int) = echo "an int: ", x
+proc p(x: string) = echo "a string: ", x
+
+proc myobj(a, b: char, x, y: int, z: string): TMyObj =
+  result.a = a; result.b = b; result.x = x; result.y = y; result.z = z
+
+var x = myobj('a', 'b', 5, 6, "abc")
+var y = myobj('A', 'b', 5, 9, "abc")
+
+for f in fields(x): 
+  p f
+
+for a, b in fields(x, y):
+  echo a == b
+
+for key, val in fieldPairs(x):
+  echo key, ": ", val
+
+var co: TMyCaseObj
+co.myDisc = enC
+co.c = 'Z'
+for key, val in fieldPairs(co):
+  echo key, ": ", val
+
+for val in fields(co):
+  echo val