build123d/tests/test_benchmarks.py

112 lines
2.6 KiB
Python

import pytest
import sys
from build123d import *
from pathlib import Path
from unittest.mock import Mock
mock_module = Mock()
mock_module.show = Mock()
mock_module.show_object = Mock()
mock_module.show_all = Mock()
sys.modules["ocp_vscode"] = mock_module
_ = pytest.importorskip("pytest_benchmark")
def _read_docs_ttt_code(name):
checkout_dir = Path(__file__).parent.parent
ttt_dir = checkout_dir / "docs/assets/ttt"
name = "ttt-" + name + ".py"
with open(ttt_dir / name, "r") as f:
return f.read()
def test_ppp_0101(benchmark):
def model():
exec(_read_docs_ttt_code("ppp0101"))
benchmark(model)
def test_ppp_0102(benchmark):
def model():
exec(_read_docs_ttt_code("ppp0102"))
benchmark(model)
def test_ppp_0103(benchmark):
def model():
exec(_read_docs_ttt_code("ppp0103"))
benchmark(model)
def test_ppp_0104(benchmark):
def model():
exec(_read_docs_ttt_code("ppp0104"))
benchmark(model)
def test_ppp_0105(benchmark):
def model():
exec(_read_docs_ttt_code("ppp0105"))
benchmark(model)
def test_ppp_0106(benchmark):
def model():
exec(_read_docs_ttt_code("ppp0106"))
benchmark(model)
def test_ppp_0107(benchmark):
def model():
exec(_read_docs_ttt_code("ppp0107"))
benchmark(model)
def test_ppp_0108(benchmark):
def model():
exec(_read_docs_ttt_code("ppp0108"))
benchmark(model)
def test_ppp_0109(benchmark):
def model():
exec(_read_docs_ttt_code("ppp0109"))
benchmark(model)
def test_ppp_0110(benchmark):
def model():
exec(_read_docs_ttt_code("ppp0110"))
benchmark(model)
def test_ttt_23_02_02(benchmark):
def model():
exec(_read_docs_ttt_code("23-02-02-sm_hanger"))
benchmark(model)
def test_ttt_23_T_24(benchmark):
def model():
exec(_read_docs_ttt_code("23-t-24-curved_support"))
benchmark(model)
def test_ttt_24_SPO_06(benchmark):
def model():
exec(_read_docs_ttt_code("24-SPO-06-Buffer_Stand"))
benchmark(model)
@pytest.mark.parametrize("test_input", [100, 1000, 10000, 100000])
def test_mesher_benchmark(benchmark, test_input):
# in the 100_000 case test should take on the order of 0.2 seconds
# but usually less than 1 second
def test_create_3mf_mesh(i):
vertices = [(float(i), 0.0, 0.0) for i in range(i)]
triangles = [[i, i + 1, i + 2] for i in range(0, i - 3, 3)]
mesher = Mesher()._create_3mf_mesh(vertices, triangles)
assert len(mesher[0]) == i
assert len(mesher[1]) == int(i / 3)
benchmark(test_create_3mf_mesh, test_input)