diff options
author | Dominik Picheta <dominikpicheta@gmail.com> | 2017-04-08 20:55:32 +0200 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@gmail.com> | 2017-04-08 20:55:32 +0200 |
commit | 12aafb25cc51488a99d6d73a7fd3965eb73b0bf5 (patch) | |
tree | 7dda4c9333ab293d3cd3c0daeceb5dcdb0b2c7fa /tests/stdlib | |
parent | cdfcc12529d716786683c997f1f673bd423432b6 (diff) | |
download | Nim-12aafb25cc51488a99d6d73a7fd3965eb73b0bf5.tar.gz |
First implementation of JSON unmarshal macro.
Diffstat (limited to 'tests/stdlib')
-rw-r--r-- | tests/stdlib/tjsonmacro.nim | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/stdlib/tjsonmacro.nim b/tests/stdlib/tjsonmacro.nim new file mode 100644 index 000000000..7dbbf6b51 --- /dev/null +++ b/tests/stdlib/tjsonmacro.nim @@ -0,0 +1,40 @@ +import json, macros, strutils + +type + Point[T] = object + x, y: T + + ReplayEventKind* = enum + FoodAppeared, FoodEaten, DirectionChanged + + ReplayEvent* = object + time*: float + case kind*: ReplayEventKind + of FoodAppeared, FoodEaten: + foodPos*: Point[float] + of DirectionChanged: + playerPos*: float + + Replay* = ref object + events*: seq[ReplayEvent] + +var x = Replay( + events: @[ + ReplayEvent( + time: 1.2345, + kind: FoodEaten, + foodPos: Point[float](x: 5.0, y: 1.0) + ) + ] +) + +let node = %x + +echo(node) + +let y = to(node, Replay) +doAssert y.events[0].time == 1.2345 +doAssert y.events[0].kind == FoodEaten +doAssert y.events[0].foodPos.x == 5.0 +doAssert y.events[0].foodPos.y == 1.0 +echo(y.repr) \ No newline at end of file |