__version__ = "$Revision: 5419 $"

from time import time

from asserts import *

__all__ = ["performance_test"]


def performance_test(t=1.0):
    """Mark a function as a performance test.

    If the test runs for more than the supplied amount of seconds (may be
    a fractional number), the test fails.

    """
    def maker(f):
        def timer(*args, **kwargs):
            start_time = time()
            ret = f(*args, **kwargs)
            needed_time = time() - start_time
            assert_true(needed_time <= t,
                    "test ran longer (%.03fs) " % needed_time +
                    "than required (<= %.03fs)" % t)
            return ret
        return test(timer)
    return maker
