aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_timed.py
blob: e46bd374cf4d02df0ab85f1701bc70022bac32b2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import math
import time
from unittest import TestCase

from snekbox.utils.timed import time_limit


class TimedTests(TestCase):
    def test_sleep(self):
        """Test that a sleep can be interrupted."""
        _finished = False
        start = time.perf_counter()
        with self.assertRaises(TimeoutError):
            with time_limit(1):
                time.sleep(2)
                _finished = True
        end = time.perf_counter()
        self.assertLess(end - start, 2)
        self.assertFalse(_finished)

    def test_iter(self):
        """Test that a long-running built-in function can be interrupted."""
        _result = 0
        start = time.perf_counter()
        with self.assertRaises(TimeoutError):
            with time_limit(1):
                _result = math.factorial(2**30)
        end = time.perf_counter()
        self.assertEqual(_result, 0)
        self.assertLess(end - start, 2)