diff options
author | Dominik Picheta <dominikpicheta@gmail.com> | 2017-11-29 19:15:25 +0000 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@googlemail.com> | 2017-11-30 21:34:30 +0000 |
commit | 8ca41ce637106c734cd819a1f49606db880cf075 (patch) | |
tree | fe0b2d445d834c6c1b9d102632847847d2ce3fda /tests/stdlib | |
parent | d3c9b58c005e7cd537cbdf3dfd3f69e72fa40722 (diff) | |
download | Nim-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.nim | 25 |
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 |