(import /src/calc)
(import /src/eval)
(use testament)
(defn unwrap
[obj]
(match obj
{:data data} (map unwrap data)
{:value value} value))
(defn vec=
[val obj]
(is (== val (unwrap obj))))
(defn- make-element
[x]
(if (number? x) (:new calc/Int x) x))
(defn wrap
[& args]
(calc/wrap ;(map make-element args)))
(defn quote-wrap
[& args]
(calc/quote-wrap ;(map make-element args)))
(defn pop-and-compare
[val s]
(let [found (match (calc/pop s)
{:value value} value)]
(is (== val found))))
(defn eval-all
[stack tokens]
(each token tokens
(eval/eval-and-push stack token)))