>>> from should_dsl import *

>>> def divide_one_by_zero():
...    return 1 / 0
>>> def divide_x_by_y(x, y):
...     return x / y

>>> ZeroDivisionError |should| be_thrown_by(divide_one_by_zero)

>>> ZeroDivisionError |should_not| be_thrown_by(divide_one_by_zero)
Traceback (most recent call last):
    ...
ShouldNotSatisfied: ...ZeroDivisionError... is thrown by <function divide_one_by_zero at ...>

>>> ZeroDivisionError |should| be_thrown_by((divide_x_by_y, 5, 0))

>>> ZeroDivisionError |should| be_thrown_by([divide_x_by_y, 2, 1])
Traceback (most recent call last):
    ...
ShouldNotSatisfied: ...ZeroDivisionError... is not thrown by [<function divide_x_by_y at ...>, 2, 1]

>>> AttributeError |should_not| be_thrown_by((divide_x_by_y, 1, 0))

