 
 (def reported (atom []))
 
+(defn run-and-check [run-form check-forms]
+  `(do 
+     (binding [report (fn [report-map#] (swap! reported conj report-map#))]
+       (reset! reported [])
+       ~run-form)
+     ~@check-forms))
+
+
 (defmacro one-case 
   ([description]
    `(println "PENDING:"  ~description))

  (= 1 (count (deref reported))))

(defn raw-report [] (println @reported))

					 (= (first form) 'expect)))]
     (assert (form-is-expect? expect-form))
     (assert (every? #(not (form-is-expect? %)) check-forms))
     (run-and-check expect-form check-forms))))


(defmacro after
  ([description]
   `(println "PENDING:"  ~description))
  ([example-form & check-forms]
   (run-and-check example-form check-forms)))
  

(defn last-type? [expected]
  (= (:type (last (deref reported))) expected))
