""" Example for running pytest. """ import pytest class Simulation: def __init__(self): """ Initializer for a simulation object. """ self._distortions = [] # list of lists containing distortion vectors def get_distortion_vector(self, idx): if idx >= len(self._distortions) or idx < 0: raise IndexError("Invalid distortion vector index.") return self._distortions[idx] def register_distortion_vector(self, distortion): """ Append a distortion vector to the simulation's distortion register. Parameter: distortion: List (3D) to be added to the distortion register. """ if len(distortion) != 3: raise ValueError("Invalid distortion vector dimension.") self._distortions.append(distortion) @pytest.fixture def test_first_distortion(): return [1.001, 0.998, 1.001] @pytest.fixture def test_second_distortion(): return [0.999, 1.002, 0.999] @pytest.fixture def test_sim_object(test_first_distortion, test_second_distortion): s = Simulation() s.register_distortion_vector(test_first_distortion) s.register_distortion_vector(test_second_distortion) return s def test_vector_order(test_first_distortion, test_second_distortion, test_sim_object): v = test_sim_object.get_distortion_vector(0) for d in range(3): assert v[d] == pytest.approx(test_first_distortion[d]) v = test_sim_object.get_distortion_vector(1) for d in range(3): assert v[d] == pytest.approx(test_second_distortion[d]) with pytest.raises(IndexError) as excinfo: v = test_sim_object.get_distortion_vector(2) assert str(excinfo.value) == "Invalid distortion vector index."