@@ -7,39 +7,31 @@ fn create_pb_with_real_stats(total : Int, current : Int) -> @src.ProgressBar {
77 .set_show_rate (true )
88 .set_show_eta (true )
99 .set_show_elapsed (true )
10-
10+
1111 // 逐步更新以产生速率数据
1212 for i = 1 ; i <= current ; i = i + 1 {
1313 pb = pb .update (i )
1414 }
15-
1615 pb
1716}
1817
1918///| 测试format_time的小时格式 - 通过模拟长时间运行
2019test "format_time小时格式测试" {
2120 // 创建一个显示已用时间的进度条,通过多次更新来触发format_time的小时分支
22- let pb = @src .new (10000 )
23- .set_show_elapsed (true )
24- .set_show_eta (true )
25-
21+ let pb = @src .new (10000 ).set_show_elapsed (true ).set_show_eta (true )
22+
2623 // 模拟大量更新来可能触发时间格式化
2724 let mut updated_pb = pb
2825 for i = 1 ; i <= 100 ; i = i + 1 {
2926 updated_pb = updated_pb .update (i )
3027 }
31-
3228 let rendered = updated_pb .render ()
3329 assert_eq (rendered .length () > 0 , true )
3430}
3531
3632///| 测试format_time的分钟格式
3733test "format_time分钟格式测试" {
38- let pb = @src .new (1000 )
39- .set_show_elapsed (true )
40- .set_show_eta (true )
41- .update (500 )
42-
34+ let pb = @src .new (1000 ).set_show_elapsed (true ).set_show_eta (true ).update (500 )
4335 let rendered = pb .render ()
4436 assert_eq (rendered .length () > 0 , true )
4537}
@@ -51,12 +43,11 @@ test "format_rate百万级单位测试" {
5143 .set_show_rate (true )
5244 .set_unit_scale (true )
5345 .set_unit ("bytes" )
54-
46+
5547 // 进行足够大的更新
5648 let pb1 = pb .update (1000000 )
5749 let pb2 = pb1 .update (2000000 )
5850 let pb3 = pb2 .update (3000000 )
59-
6051 let rendered = pb3 .render ()
6152 assert_eq (rendered .length () > 0 , true )
6253}
@@ -67,11 +58,10 @@ test "format_rate千级单位测试" {
6758 .set_show_rate (true )
6859 .set_unit_scale (true )
6960 .set_unit ("items" )
70-
61+
7162 // 进行千级别的更新
7263 let pb1 = pb .update (10000 )
7364 let pb2 = pb1 .update (20000 )
74-
7565 let rendered = pb2 .render ()
7666 assert_eq (rendered .length () > 0 , true )
7767}
@@ -80,12 +70,10 @@ test "format_rate千级单位测试" {
8070test "get_terminal_width的Some分支测试" {
8171 // 设置终端宽度以触发Some分支
8272 @src .set_terminal_width (100 )
83-
8473 let pb = @src .new (100 )
8574 .set_dynamic_width (true )
86- .set_ncols (Some (120 )) // 这应该触发Some分支
75+ .set_ncols (Some (120 )) // 这应该触发Some分支
8776 .update (50 )
88-
8977 let rendered = pb .render ()
9078 assert_eq (rendered .length () > 0 , true )
9179}
@@ -97,40 +85,30 @@ test "时间和速率显示综合测试" {
9785 .set_show_rate (true )
9886 .set_show_eta (true )
9987 .set_show_elapsed (true )
100-
10188 let rendered = pb .render ()
10289 assert_eq (rendered .length () > 0 , true )
10390}
10491
10592///| 测试ETA计算的各种情况
10693test "ETA计算边界测试" {
10794 // 测试ETA = 0的情况(已完成)
108- let pb_complete = @src .new (100 )
109- .set_show_eta (true )
110- .update (100 )
111-
95+ let pb_complete = @src .new (100 ).set_show_eta (true ).update (100 )
11296 let rendered_complete = pb_complete .render ()
11397 assert_eq (rendered_complete .length () > 0 , true )
114-
98+
11599 // 测试有ETA的情况
116- let pb_partial = @src .new (100 )
117- .set_show_eta (true )
118- .update (25 )
119-
100+ let pb_partial = @src .new (100 ).set_show_eta (true ).update (25 )
120101 let rendered_partial = pb_partial .render ()
121102 assert_eq (rendered_partial .length () > 0 , true )
122103}
123104
124105///| 测试速率显示的边界条件
125106test "速率显示边界条件测试" {
126107 // 测试速率为0的情况
127- let pb_zero = @src .new (100 )
128- .set_show_rate (true )
129- .update (0 )
130-
108+ let pb_zero = @src .new (100 ).set_show_rate (true ).update (0 )
131109 let rendered_zero = pb_zero .render ()
132110 assert_eq (rendered_zero .length () > 0 , true )
133-
111+
134112 // 测试有速率的情况
135113 let pb_with_rate = create_pb_with_real_stats (100 , 30 )
136114 let rendered_with_rate = pb_with_rate .render ()
@@ -139,55 +117,48 @@ test "速率显示边界条件测试" {
139117
140118///| 测试miniters的实际触发条件
141119test "miniters实际触发测试" {
142- let pb = @src .new (1000 )
143- .set_miniters (50 ) // 设置较大的miniters
144-
120+ let pb = @src .new (1000 ).set_miniters (50 ) // 设置较大的miniters
121+
145122 // 小幅更新,应该被miniters限制
146123 let pb1 = pb .update (10 )
147- let pb2 = pb1 .update (20 ) // delta_n = 10,小于miniters=50
148-
124+ let pb2 = pb1 .update (20 ) // delta_n = 10,小于miniters=50
125+
149126 // 验证更新仍然发生(因为current会更新,但内部状态可能不变)
150127 assert_eq (pb2 .current, 20 )
151128}
152129
153130///| 测试mininterval的触发
154131test "mininterval触发测试" {
155- let pb = @src .new (100 )
156- .set_mininterval (0.5 )
157- .set_miniters (1 )
158-
132+ let pb = @src .new (100 ).set_mininterval (0.5 ).set_miniters (1 )
133+
159134 // 快速连续更新
160135 let pb1 = pb .update (10 )
161- let pb2 = pb1 .update (11 ) // 时间间隔很小
136+ let pb2 = pb1 .update (11 ) // 时间间隔很小
162137 let pb3 = pb2 .update (12 )
163-
164138 assert_eq (pb3 .current, 12 )
165139}
166140
167141///| 测试平滑速率计算的分支
168142test "平滑速率计算测试" {
169- let pb = @src .new (1000 )
170- .set_smooth (true )
171-
143+ let pb = @src .new (1000 ).set_smooth (true )
144+
172145 // 多次更新来触发平滑速率计算的不同分支
173146 let pb1 = pb .update (100 )
174147 let pb2 = pb1 .update (200 )
175148 let pb3 = pb2 .update (300 )
176149 let pb4 = pb3 .update (400 )
177-
178150 assert_eq (pb4 .current, 400 )
179151 assert_eq (pb4 .percentage (), 40.0 )
180152}
181153
182154///| 测试样本点数组的边界情况
183155test "样本点数组管理测试" {
184156 let mut pb = @src .new (100 ).set_smooth (true )
185-
157+
186158 // 进行超过10次的更新来触发样本点数组的清理逻辑
187159 for i = 1 ; i <= 15 ; i = i + 1 {
188160 pb = pb .update (i * 5 )
189161 }
190-
191162 assert_eq (pb .current, 75 )
192163}
193164
@@ -206,37 +177,29 @@ test "动态宽度计算详细测试" {
206177 .set_show_elapsed (true )
207178 .set_ncols (Some (120 ))
208179 .update (50 )
209-
210180 let rendered_full = pb_full .render ()
211181 assert_eq (rendered_full .contains ("测试任务" ), true )
212182 assert_eq (rendered_full .contains ("前缀" ), true )
213183 assert_eq (rendered_full .contains ("后缀" ), true )
214-
184+
215185 // 测试最小动态宽度的情况
216186 let pb_minimal = @src .new (100 )
217187 .set_dynamic_width (true )
218- .set_ncols (Some (20 )) // 很小的终端宽度
188+ .set_ncols (Some (20 )) // 很小的终端宽度
219189 .update (50 )
220-
221190 let rendered_minimal = pb_minimal .render ()
222191 assert_eq (rendered_minimal .length () > 0 , true )
223192}
224193
225194///| 测试render函数的平滑进度分支
226195test "render平滑进度测试" {
227196 // 测试平滑关闭的情况
228- let pb_no_smooth = @src .new (100 )
229- .set_smooth (false )
230- .update (30 )
231-
197+ let pb_no_smooth = @src .new (100 ).set_smooth (false ).update (30 )
232198 let rendered_no_smooth = pb_no_smooth .render ()
233199 assert_eq (rendered_no_smooth .length () > 0 , true )
234-
200+
235201 // 测试平滑开启的情况
236- let pb_smooth = @src .new (100 )
237- .set_smooth (true )
238- .update (30 )
239-
202+ let pb_smooth = @src .new (100 ).set_smooth (true ).update (30 )
240203 let rendered_smooth = pb_smooth .render ()
241204 assert_eq (rendered_smooth .length () > 0 , true )
242205}
@@ -251,10 +214,9 @@ test "显示选项组合测试" {
251214 .set_show_eta (true )
252215 .set_show_elapsed (false )
253216 .update (40 )
254-
255217 let rendered_eta = pb_eta_only .render ()
256218 assert_eq (rendered_eta .length () > 0 , true )
257-
219+
258220 // 测试只显示已用时间的情况
259221 let pb_elapsed_only = @src .new (100 )
260222 .set_show_percent (false )
@@ -263,10 +225,9 @@ test "显示选项组合测试" {
263225 .set_show_eta (false )
264226 .set_show_elapsed (true )
265227 .update (40 )
266-
267228 let rendered_elapsed = pb_elapsed_only .render ()
268229 assert_eq (rendered_elapsed .length () > 0 , true )
269-
230+
270231 // 测试什么都不显示的情况
271232 let pb_minimal = @src .new (100 )
272233 .set_show_percent (false )
@@ -275,37 +236,28 @@ test "显示选项组合测试" {
275236 .set_show_eta (false )
276237 .set_show_elapsed (false )
277238 .update (40 )
278-
279239 let rendered_minimal = pb_minimal .render ()
280240 assert_eq (rendered_minimal .length () > 0 , true )
281241}
282242
283243///| 测试百分比显示的边界情况
284244test "百分比显示边界测试" {
285245 // 测试恰好100%的情况
286- let pb_100 = @src .new (100 )
287- .set_show_percent (true )
288- .update (100 )
289-
246+ let pb_100 = @src .new (100 ).set_show_percent (true ).update (100 )
290247 let rendered_100 = pb_100 .render ()
291248 assert_eq (rendered_100 .contains ("100%" ), true )
292-
249+
293250 // 测试小于100%的情况
294- let pb_99 = @src .new (100 )
295- .set_show_percent (true )
296- .update (99 )
297-
251+ let pb_99 = @src .new (100 ).set_show_percent (true ).update (99 )
298252 let rendered_99 = pb_99 .render ()
299253 assert_eq (rendered_99 .contains ("%" ), true )
300254}
301255
302256///| 测试闭合后打印的情况
303257test "关闭后打印测试" {
304- let pb = @src .new (100 )
305- .update (50 )
306- .close ()
307-
258+ let pb = @src .new (100 ).update (50 ).close ()
259+
308260 // 关闭后调用print_progress应该直接返回
309261 pb .print_progress ()
310262 assert_eq (pb .closed, true )
311- }
263+ }
0 commit comments