|
1 | 1 | from path import Path |
2 | 2 | import os, sys, asyncio |
| 3 | +from time import perf_counter |
3 | 4 |
|
4 | 5 | if sys.platform == "win32": |
5 | 6 | asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) |
|
70 | 71 | code_nested_top = """import test_nested_bottom |
71 | 72 | """ |
72 | 73 |
|
| 74 | +code_many_shapes = """from cadquery.func import * |
| 75 | +
|
| 76 | +num = 20 |
| 77 | +
|
| 78 | +for i in range(1, num + 1, 1): |
| 79 | + for j in range(1, num + 1, 1): |
| 80 | + globals()[f"b_{i}_{j}"] = box(1, 1, 1).move( |
| 81 | + x=1.1 * i, |
| 82 | + y=1.1 * j, |
| 83 | + z=0, |
| 84 | + ) |
| 85 | +""" |
| 86 | + |
73 | 87 | code_nested_bottom = """a=1 |
74 | 88 | """ |
75 | 89 |
|
@@ -272,6 +286,34 @@ def test_render(main): |
272 | 286 | assert obj_tree_comp.CQ.childCount() == 3 |
273 | 287 |
|
274 | 288 |
|
| 289 | +def test_many_shapes_render_and_erase_time(main_clean): |
| 290 | + qtbot, win = main_clean |
| 291 | + |
| 292 | + editor = win.components["editor"] |
| 293 | + debugger = win.components["debugger"] |
| 294 | + object_tree = win.components["object_tree"] |
| 295 | + viewer = win.components["viewer"] |
| 296 | + |
| 297 | + debugger.preferences["Reload CQ"] = False |
| 298 | + object_tree.preferences["Clear all before each run"] = True |
| 299 | + viewer.preferences["Fit automatically"] = True |
| 300 | + editor.set_text(code_many_shapes) |
| 301 | + |
| 302 | + start = perf_counter() |
| 303 | + debugger._actions["Run"][0].triggered.emit() |
| 304 | + render_elapsed = perf_counter() - start |
| 305 | + |
| 306 | + assert object_tree.CQ.childCount() == 20 * 20 |
| 307 | + |
| 308 | + start = perf_counter() |
| 309 | + object_tree.removeObjects() |
| 310 | + erase_elapsed = perf_counter() - start |
| 311 | + |
| 312 | + assert object_tree.CQ.childCount() == 0 |
| 313 | + assert render_elapsed < 2, f"400-shape render took {render_elapsed:.3f}s" |
| 314 | + assert erase_elapsed < 2, f"400-shape erase took {erase_elapsed:.3f}s" |
| 315 | + |
| 316 | + |
275 | 317 | def test_export(main, mocker): |
276 | 318 |
|
277 | 319 | qtbot, win = main |
|
0 commit comments