aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test/lux/macro/code.lux
blob: fa40f0fecbf163837817a90c9177aa4f3c6b0dd1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
(.module:
  [lux #*
   [io]
   [control
    [monad (#+ do Monad)]]
   [data
    [number]
    ["." text ("#;." equivalence)
     format]]
   [math
    ["r" random]]
   [macro
    ["&" code]]]
  lux/test)

(context: "Code"
  (with-expansions
    [<tests> (do-template [<expr> <text>]
               [(test (format "Can produce Code node: " <text>)
                      (and (text;= <text> (&.to-text <expr>))
                           (:: &.equivalence = <expr> <expr>)))]

               [(&.bit #1)                                  "#1"]
               [(&.bit #0)                                  "#0"]
               [(&.int +123)                                "+123"]
               [(&.frac +123.0)                             "+123.0"]
               [(&.text "1234")                               (format text.double-quote "1234" text.double-quote)]
               [(&.tag ["yolo" "lol"])                      "#yolo.lol"]
               [(&.identifier ["yolo" "lol"])               "yolo.lol"]
               [(&.form (list (&.bit #1) (&.int +123)))     "(#1 +123)"]
               [(&.tuple (list (&.bit #1) (&.int +123)))    "[#1 +123]"]
               [(&.record (list [(&.bit #1) (&.int +123)])) "{#1 +123}"]
               [(&.local-tag "lol")                         "#lol"]
               [(&.local-identifier "lol")                  "lol"]
               )]
    ($_ seq <tests>)))