Back
deferred (clj)
(source)macro
(deferred & expr)
Examples
aero
(ns aero.core-test
(:require
[aero.core :refer [read-config reader
#?@(:clj [deferred resource-resolver root-resolver])
#?(:cljs Deferred)]
#?@(:cljs [:refer-macros [deferred]])]
[clojure.test :refer [deftest is testing are]]
#?@(:clj [[clojure.java.io :as io]]
:cljs [[goog.object :as gobj]
[goog.string :as gstring]
goog.string.format
[cljs.tools.reader.reader-types
:refer [source-logging-push-back-reader]]]))
#?(:clj (:import [aero.core Deferred])))
(defmethod reader 'expensive-network-call
[_ tag value]
(deferred
(swap! network-call-count inc)
(inc value)))
(deftest deferred-test
(is
(instance? Deferred (deferred (+ 2 2))))
;; The basic idea here is to ensure that the #expensive-network-call
;; tag literal is called (because it increments its value). This
;; also tests the Deferred functionality as a consequence.
(let [config (read-config "test/aero/config.edn")]
(is (= (get-in config [:network-call])
8))))