summary refs log tree commit diff stats
path: root/tests/stdlib/tjsonmacro.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/stdlib/tjsonmacro.nim')
-rw-r--r--tests/stdlib/tjsonmacro.nim40
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