diff --git a/pyproject.toml b/pyproject.toml index 01f775d..6e258f4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,6 +41,7 @@ dev = [ "mypy", "pre-commit", "pytest", + "pytest-benchmark", "pytest-runner", "ruff", "towncrier>=24,<25", diff --git a/tests/test_benchmarks.py b/tests/test_benchmarks.py new file mode 100644 index 0000000..336dc29 --- /dev/null +++ b/tests/test_benchmarks.py @@ -0,0 +1,27 @@ +import pytest + +from multibase import ENCODINGS, decode, encode + +BENCH_DATA = b"Decentralize everything!!!" + + +@pytest.mark.benchmark +@pytest.mark.parametrize("encoding_info", ENCODINGS, ids=lambda e: e.encoding) +def test_bench_encode(benchmark, encoding_info): + benchmark(encode, encoding_info.encoding, BENCH_DATA) + + +@pytest.mark.benchmark +@pytest.mark.parametrize("encoding_info", ENCODINGS, ids=lambda e: e.encoding) +def test_bench_decode(benchmark, encoding_info): + encoded = encode(encoding_info.encoding, BENCH_DATA) + benchmark(decode, encoded) + + +@pytest.mark.benchmark +@pytest.mark.parametrize("encoding_info", ENCODINGS, ids=lambda e: e.encoding) +def test_bench_roundtrip(benchmark, encoding_info): + def roundtrip(): + return decode(encode(encoding_info.encoding, BENCH_DATA)) + + benchmark(roundtrip)