 (defcontext failing-assertion [it is-without-givens]
   (second (:children it)))
 
+(defcontext is-that-throws []
+  (is (/ 1 0)))
+
+(defcontext throwing-assertion [it is-that-throws]
+  (first (:children it)))
+
+(defcontext is-thrown-assertion []
+  (first (:children (is (thrown? java.lang.ArithmeticException (/ 1 0))))))
+
+(defcontext is-thrown-assertion-wrong-type []
+  (first (:children (is (thrown? java.lang.IndexOutOfBoundsException (/ 1 0))))))
+
+(defcontext is-thrown-assertion-no-throw []
+  (first (:children (is (thrown? java.lang.Exception (= 1 1))))))
+
+(defcontext empty-is []
+  (is ))
+
 (describe
- *ns* 
+ *ns*
  (spec is-spec "The 'is' macro"
        (given [it is-without-givens]
               (spec "without any givens"

                                        (every? context? (:contexts (first (:children it)))))))))))

 (spec assertions-spec "Assertions, when invoked"
       (given [it passing-assertion]
              (spec "should return an object"
                    (is (not (nil? (it)))
                        "that supports success?"
                        (ok? (success? (it)))
                        "that supports pending?"
                        (ok? (pending? (it)))
                        "that supports error?"
                        (ok? (error? (it)))
                        "that supports container?"
                        (ok? (container? (it)))))))

 (spec passing-assertion "A passing assertion"
       (given [it passing-assertion]
              (is "should return true for success?"
                  (true? (success? (it)))
                  "should return false for error?"
                  (false? (error? (it)))
                  "should return false for pending?"
                  (false? (pending? (it)))
                  "should return false for container?"
                  (false? (pending? (it))))))

  (spec failing-assertion "A failing assertion"
       (given [it failing-assertion]
              (is "should return false for success?"
                  (false? (success? (it)))
                  "should return false for error?"
                  (false? (error? (it)))
                  "should return false for pending?"
                  (false? (pending? (it)))
                  "should return false for container?"
                  (false? (pending? (it)))))))

         :only (describe spec spec?
                         is given defcontext
                         context? ok? success?
                         pending? error? container?
                         thrown? thrown-with-msg?)]))

(defcontext dummy-context-1 [] 1)

