import random import pytest import unit_converter @pytest.fixture(scope="module") def batch_numbers(): return [random.random() * 100 for x in range(1000)] def python_unit_converter(celsius): return celsius * 1.8 + 32.0 def batch_python_unit_converter(temperatures): return [celsius * 1.8 + 32.0 for celsius in temperatures] def test_using_unit_converter(): assert unit_converter.convert_celsius_to_fahrenheit(25.0) == 77.0 assert python_unit_converter(25.0) == 77.0 def test_using_python_constant(benchmark): result = benchmark(python_unit_converter, 25.0) assert round(result, 3) == round(77.0, 3) def test_using_rust_constant(benchmark): result = benchmark(unit_converter.convert_celsius_to_fahrenheit, 25.0) assert round(result, 3) == round(77.0, 3) def test_using_python(benchmark): temperature = random.random() * 100 result = benchmark(python_unit_converter, temperature) assert round(result, 3) == round(python_unit_converter(temperature), 3) def test_using_rust(benchmark): temperature = random.random() * 100 result = benchmark(unit_converter.convert_celsius_to_fahrenheit, temperature) assert round(result, 3) == round(python_unit_converter(temperature), 3) def test_using_python_batch(benchmark, batch_numbers): benchmark(batch_python_unit_converter, batch_numbers) def test_using_rust_batch(benchmark, batch_numbers): benchmark(unit_converter.batch_convert_celsius_to_fahrenheit, batch_numbers)