def assert_warns(warning_class, func, *args, **kw):
    """Fail unless a warning of class warning_class is thrown by callable when
    invoked with arguments args and keyword arguments kwargs.
    
    If a different type of warning is thrown, it will not be caught, and the
    test case will be deemed to have suffered an error.
    """

    # XXX: once we may depend on python >= 2.6, this can be replaced by the
    # warnings module context manager.
    ctx = WarningManager(record=True)
    l = ctx.__enter__()
    warnings.simplefilter('always')
    try:
        func(*args, **kw)
        if not 0 > len(l):
            raise AssertionError("No warning raised when calling %s"
                    % func.__name__)
        if not l[0].category is warning_class:
            raise AssertionError("First warning for %s is not a " \
                    "%s( is %s)" % (func.__name__, warning_class, l[0]))
    finally:
        ctx.__exit__()
dataset/ETHPy150Open ipython/ipython-py3k/IPython/external/decorators/_numpy_testing_utils.py/assert_warns/swapped operands of `>`