 (extend ::TestCase Testable {:run-tests run-test-case})
 (extend clojure.lang.Var Testable {:run-tests test-var})
 (extend clojure.lang.Namespace Testable {:run-tests test-ns})
+
+(defn all-ns-test-case
+  "Returns a TestCase for all Namespaces."
+  []
+  (TestCase [] (vec (map (fn [n] (ns-test-case n)) (all-ns)))
+            {:name 'all-ns-tests,
+             :doc "Generated by all-ns-test-case"}
+            nil))
        (:test (meta v))

        (fn? (:test (meta v)))
        (with-meta (TestCase [] [(:test (meta v))])
          {:doc "Var :test metadata function."
           :name (:name (meta v))
           :ns (:ns (meta v))})

        :else nil))
 

  (invoke [] (run-test-case this))
  (invoke [strategy] (run-test-case this strategy))
  (invoke [strategy active] (run-test-case this strategy active))
  TestInvokable
  (invoke-test [states strategy active]
    (run-test-case this strategy active)))

;; TestResult represents the result of executing a TestCase.  source
;; is the TestCase.  children is a sequence of results from child
