summary refs log tree commit diff stats
path: root/tests/run
diff options
context:
space:
mode:
authorZahary Karadjov <zahary@gmail.com>2012-09-25 02:01:16 +0300
committerZahary Karadjov <zahary@gmail.com>2012-09-25 02:03:15 +0300
commitc899b51b52e8afbf940c0869dc3d35b55adf9ceb (patch)
tree7e57022304bcf61335d7f5fa1a562d605c023d0c /tests/run
parentbadb6c0f665e22bff77d91bb2f64f195110b9887 (diff)
downloadNim-c899b51b52e8afbf940c0869dc3d35b55adf9ceb.tar.gz
test cases for the new typedesc features
Diffstat (limited to 'tests/run')
-rw-r--r--tests/run/ttypedesc1.nim7
-rw-r--r--tests/run/ttypetraits.nim23
2 files changed, 28 insertions, 2 deletions
diff --git a/tests/run/ttypedesc1.nim b/tests/run/ttypedesc1.nim
index eedb00792..0c6f5dce4 100644
--- a/tests/run/ttypedesc1.nim
+++ b/tests/run/ttypedesc1.nim
@@ -1,10 +1,12 @@
-import unittest
+import unittest, typetraits
 
 type 
   TFoo[T, U] = object
     x: T
     y: U
 
+proc getTypeName(t: typedesc): string = t.name
+
 proc foo(T: typedesc[float], a: expr): string =
   result = "float " & $(a.len > 5)
 
@@ -21,6 +23,9 @@ template foo(T: typedesc[seq]): expr = "seq"
 test "types can be used as proc params":
   # XXX: `check` needs to know that TFoo[int, float] is a type and 
   # cannot be assigned for a local variable for later inspection
+  check ((string.getTypeName == "string"))
+  check ((getTypeName(int) == "int"))
+  
   check ((foo(TFoo[int, float], 1000) == "TFoo 1000"))
   
   var f = 10.0
diff --git a/tests/run/ttypetraits.nim b/tests/run/ttypetraits.nim
index cba610871..9a4a7d0d3 100644
--- a/tests/run/ttypetraits.nim
+++ b/tests/run/ttypetraits.nim
@@ -1,6 +1,6 @@
 discard """
   msg:    "int\nstring\nTBar[int]"
-  output: "int\nstring\nTBar[int]\nint\nrange 0..2"
+  output: "int\nstring\nTBar[int]\nint\nrange 0..2\nstring"
 """
 
 import typetraits
@@ -36,3 +36,24 @@ proc foo3[R, T](x: array[R, T]) =
   echo name(R)
 
 foo3 arr
+
+const TypeList = [int, string, seq[int]]
+
+macro selectType(inType: typedesc): typedesc =
+  var typeSeq = @[float, TBar[int]]
+  
+  for t in TypeList:
+    typeSeq.add(t)
+
+  typeSeq.add(inType)
+  typeSeq.add(type(10))
+  
+  var typeSeq2: seq[typedesc] = @[]
+  typeSeq2 = typeSeq
+
+  result = typeSeq2[5]
+  
+var xvar: selectType(string)
+xvar = "proba"
+echo xvar.type.name
+