__version__ = "$Revision: 10687 $"

import time

from utext import DefaultSuite, TestSuite, TestCase, test, performance_test

from _common import TestTestRunnerMixin

__all__ = ["PerformanceDecoratorTest", "AllTests"]


class PerformanceDecoratorTest(TestCase, TestTestRunnerMixin):

    def __init__(self, arg):
        TestCase.__init__(self, arg)
        TestTestRunnerMixin.__init__(self)

    @test
    def recognized_as_test(self):
        class MyTest(TestCase):
            @performance_test
            def my_test(self):
                pass
        self.runTest(MyTest("my_test"))
        self.assert_test_runs(1, 0, 0)

    @test
    def quick_enough(self):
        class MyTest(TestCase):
            @performance_test(t=1)
            def my_test(self):
                pass
        self.runTest(MyTest("my_test"))
        self.assert_test_runs(1, 0, 0)

    @test
    def too_slow(self):
        class MyTest(TestCase):
            @performance_test(t=0.01)
            def my_test(self):
                time.sleep(0.02)
        self.runTest(MyTest("my_test"))
        self.assert_test_runs(0, 0, 1)


class AllTests(DefaultSuite):

    tests = [PerformanceDecoratorTest]

