summary refs log tree commit diff stats
path: root/tests/stdlib
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@gmail.com>2017-11-29 19:15:25 +0000
committerDominik Picheta <dominikpicheta@googlemail.com>2017-11-30 21:34:30 +0000
commit8ca41ce637106c734cd819a1f49606db880cf075 (patch)
treefe0b2d445d834c6c1b9d102632847847d2ce3fda /tests/stdlib
parentd3c9b58c005e7cd537cbdf3dfd3f69e72fa40722 (diff)
downloadNim-8ca41ce637106c734cd819a1f49606db880cf075.tar.gz
Implement support for Option[T] in json.to macro. Fixes #5848.
Diffstat (limited to 'tests/stdlib')
-rw-r--r--tests/stdlib/tjsonmacro.nim25
1 files changed, 23 insertions, 2 deletions
diff --git a/tests/stdlib/tjsonmacro.nim b/tests/stdlib/tjsonmacro.nim
index af9633e9e..f9f94606c 100644
--- a/tests/stdlib/tjsonmacro.nim
+++ b/tests/stdlib/tjsonmacro.nim
@@ -2,7 +2,7 @@ discard """
   file: "tjsonmacro.nim"
   output: ""
 """
-import json, strutils
+import json, strutils, options
 
 when isMainModule:
   # Tests inspired by own use case (with some additional tests).
@@ -295,4 +295,25 @@ when isMainModule:
     let parsed = mulTest().to(Car)
     doAssert parsed.engine.name == "V8"
 
-    doAssert i == 1
\ No newline at end of file
+    doAssert i == 1
+
+  block:
+    # Option[T] support!
+    type
+      Car1 = object # TODO: Codegen bug when `Car`
+        engine: tuple[name: string, capacity: Option[float]]
+        model: string
+        year: Option[int]
+
+    let noYear = """
+      {"engine": {"name": "V8", "capacity": 5.5}, "model": "Skyline"}
+    """
+
+    let noYearParsed = parseJson(noYear)
+    let noYearDeser = to(noYearParsed, Car1)
+    doAssert noYearDeser.engine.capacity == some(5.5)
+    doAssert noYearDeser.year.isNone
+    doAssert noYearDeser.engine.name == "V8"
+
+  # TODO: Table[T, Y] support.
+  # TODO: JsonNode support
\ No newline at end of file