File size: 2,711 Bytes
3014f14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
"""Test functions dedicated to time measurement and conversion."""

from datetime import timedelta
from lib import timer


def test_time_conversion() -> None:
    """Test conversion of time units."""
    assert timer.msec(1000) == timedelta(milliseconds=1000)
    assert timer.to_msec(timedelta(milliseconds=1000)) == 1000

    assert timer.msec_str(timedelta(milliseconds=1000)) == "1000"

    assert timer.seconds(1) == timedelta(seconds=1)
    assert timer.to_seconds(timedelta(seconds=1)) == 1

    assert timer.sec_str(timedelta(seconds=1)) == "1"

    assert timer.minutes(1) == timedelta(minutes=1)
    assert timer.hours(1) == timedelta(hours=1)
    assert timer.days(1) == timedelta(days=1)
    assert timer.years(1) == timedelta(days=365)

    assert timer.to_msec(timer.seconds(1)) == 1000
    assert timer.to_seconds(timer.minutes(1)) == 60
    assert timer.to_seconds(timer.hours(1)) == 60*60
    assert timer.to_seconds(timer.days(1)) == 24*60*60
    assert timer.to_seconds(timer.years(1)) == 365*24*60*60


def test_init() -> None:
    """Test Timer class init."""
    t = timer.Timer()
    assert t.duration == timedelta(0)
    assert t.starting_time is not None

    duration = timedelta(seconds=10)
    t = timer.Timer(duration)
    assert t.duration == duration
    assert t.starting_time is not None


def test_is_expired() -> None:
    """Test timer expiration."""
    t = timer.Timer(timedelta(seconds=10))
    assert not t.is_expired()

    t = timer.Timer(timedelta(seconds=0))
    assert t.is_expired()

    t = timer.Timer(timedelta(seconds=10))
    t.reset()
    t.starting_time -= 10
    assert t.is_expired()

def test_reset() -> None:
    """Test timer reset."""
    t = timer.Timer(timedelta(seconds=10))
    t.reset()
    assert t.starting_time is not None
    assert timer.sec_str(t.time_since_reset()) == timer.sec_str(timedelta(0))

def test_time() -> None:
    """Test time measurement, expiration, and time until expiration."""
    t = timer.Timer(timedelta(seconds=10))
    t.starting_time -= 5
    assert timer.sec_str(t.time_since_reset()) == timer.sec_str(timedelta(seconds=5))

    t = timer.Timer(timedelta(seconds=10))
    t.starting_time -= 5
    assert timer.sec_str(t.time_until_expiration()) == timer.sec_str(timedelta(seconds=5))

    t = timer.Timer(timedelta(seconds=10))
    t.starting_time -= 15  # Simulate time passing
    assert t.time_until_expiration() == timedelta(0)

    t = timer.Timer(timedelta(seconds=10))
    t.starting_time -= 15
    assert t.time_until_expiration() == timedelta(0)

    t = timer.Timer(timedelta(seconds=10))
    t.starting_time -= 5
    assert timer.sec_str(t.time_until_expiration()) == timer.sec_str(timedelta(seconds=5))