Coverage for tests\test_noiftimer.py: 100%

95 statements  

« prev     ^ index     » next       coverage.py v7.2.2, created at 2024-02-16 17:59 -0600

1import time 

2 

3import pytest 

4 

5import noiftimer 

6 

7 

8def test_noiftimer_start(): 

9 timer = noiftimer.Timer().start() 

10 assert timer.start_time 

11 assert timer.started is True 

12 

13 

14def test_noiftimer_stop(): 

15 timer = noiftimer.Timer() 

16 timer.start() 

17 time.sleep(2) 

18 timer.stop() 

19 assert timer.stop_time 

20 assert not timer.started 

21 assert timer.elapsed > 1 

22 assert timer.elapsed == timer.average_elapsed 

23 

24 

25def test_noiftimer_reset(): 

26 timer = noiftimer.Timer() 

27 timer.start() 

28 for i in range(5): 

29 timer.reset() 

30 assert len(timer.history) == 5 

31 

32 

33def test_noiftimer__save_elapsed_time(): 

34 averaging_window_length = 10 

35 timer = noiftimer.Timer(averaging_window_length) 

36 timer.start() 

37 timer.stop() 

38 assert len(timer.history) == 1 

39 for _ in range(averaging_window_length * 2): 

40 timer.start() 

41 timer.stop() 

42 assert len(timer.history) == averaging_window_length 

43 

44 

45def test_noiftimer_current_elapsed_time(): 

46 timer = noiftimer.Timer().start() 

47 time.sleep(1) 

48 elapsed_time = timer.elapsed 

49 time.sleep(1) 

50 assert 0 < elapsed_time and elapsed_time < timer.elapsed 

51 

52 

53def test__noiftimer__elapsed(): 

54 timer = noiftimer.Timer() 

55 timer.start() 

56 time.sleep(1) 

57 elapsed = timer.elapsed 

58 time.sleep(1) 

59 assert 0 < elapsed and elapsed < timer.elapsed 

60 time.sleep(1) 

61 timer.stop() 

62 assert timer.elapsed 

63 

64 

65def test__noiftimer__elapsed_str(): 

66 timer = noiftimer.Timer() 

67 timer.start() 

68 time.sleep(1) 

69 assert type(timer.elapsed_str) == str 

70 assert timer.elapsed_str != "" 

71 

72 

73@pytest.mark.parametrize( 

74 "num_seconds,subsecond_resolution,expected", 

75 [ 

76 (3600, False, "1h"), 

77 (1800, False, "30m"), 

78 (5400, False, "1h 30m"), 

79 ( 

80 (29030400) + (604800 * 2) + (3600 * 3) + (44.250043), 

81 True, 

82 "1y 2w 3h 44s 250ms 43us", 

83 ), 

84 ( 

85 (29030400) + (604800 * 2) + (3600 * 3) + (44.250043), 

86 False, 

87 "1y 2w 3h 44s", 

88 ), 

89 ], 

90) 

91def test_noiftimer_format_time( 

92 num_seconds: float, subsecond_resolution: bool, expected: float 

93): 

94 assert noiftimer.Timer.format_time(num_seconds, subsecond_resolution) == expected 

95 

96 

97def test_noiftimer_get_stats(): 

98 timer = noiftimer.Timer() 

99 timer.start() 

100 time.sleep(1) 

101 timer.stop() 

102 assert timer.stats 

103 

104 

105def test__noiftimer__time_it(): 

106 @noiftimer.time_it(10) 

107 def zzz(): 

108 time.sleep(0.1) 

109 return True 

110 

111 assert zzz() 

112 

113 

114def test__pauser(): 

115 pauser = noiftimer.noiftimer._Pauser() # type: ignore 

116 assert not pauser.paused 

117 assert pauser.pause_total == 0 

118 pauser.pause() 

119 assert pauser.paused 

120 time.sleep(1.1) 

121 pauser.unpause() 

122 assert not pauser.paused 

123 assert pauser.pause_total > 1 

124 pauser.reset() 

125 assert pauser.pause_total == 0 

126 

127 

128def test__Timer_pause(): 

129 timer = noiftimer.Timer().start() 

130 time.sleep(1) 

131 elapsed_time = timer.elapsed 

132 timer.pause() 

133 assert timer.is_paused 

134 time.sleep(1) 

135 # amount of time paused should be subtracted from elapsed 

136 assert elapsed_time == timer.elapsed 

137 timer.unpause() 

138 time.sleep(1) 

139 # pause tracker should be stopped 

140 assert timer.elapsed > elapsed_time 

141 timer.pause() 

142 time.sleep(1) 

143 timer.unpause()