from pathlib import Path import numpy as np import pytest import dopt_sensor_anomalies.detection as detect import dopt_sensor_anomalies.types as t @pytest.fixture(scope="module") def img_paths() -> tuple[Path, ...]: img_folder = Path(__file__).parent / "_img" if not img_folder.exists(): raise FileNotFoundError("Img path not existing") img_paths = tuple(img_folder.glob("*.bmp")) if not img_paths: raise ValueError("No images found") return img_paths @pytest.fixture(scope="module") def single_img_path() -> Path: img_folder = Path(__file__).parent / "_img" if not img_folder.exists(): raise FileNotFoundError("Img path not existing") img_paths = tuple(img_folder.glob("*_12.bmp")) if not img_paths: raise ValueError("No images found") return img_paths[0] def test_midpoint(): ptA = np.array([1.0, 2.0]) ptB = np.array([3.0, 4.0]) mid_x, mid_y = detect.midpoint(ptA, ptB) assert mid_x == 2.0 assert mid_y == 3.0 def test_check_box_redundancy_SameBox(): box_1: t.Box = ( (64.70450592041016, 505.09185791015625), (32.305301666259766, 162.31748962402344), 2.385944128036499, ) box_2: t.Box = ( (64.5450592041016, 504.59185791015625), (32.305301666259766, 163.01748962402344), 2.415944128036499, ) assert detect.check_box_redundancy(box_1, box_2) def test_check_box_redundancy_DifferentBox(): box_1: t.Box = ( (64.70450592041016, 505.09185791015625), (32.305301666259766, 162.31748962402344), 2.385944128036499, ) box_2: t.Box = ( (84.5450592041016, 104.59185791015625), (31.305301666259766, 150.01748962402344), 2.35944128036499, ) assert not detect.check_box_redundancy(box_1, box_2) def test_measure_length(single_img_path): pixels_per_metric_X: float = 0.251 pixels_per_metric_Y: float = 0.251 data, imgs = detect.measure_length( single_img_path, pixels_per_metric_X, pixels_per_metric_Y, ) assert len(data) == 18 assert isinstance(data[0], str) assert float(data[0].replace(",", ".")) == pytest.approx(1266.932) img_left = imgs["left"] assert 235 < img_left.shape[0] < 260 assert 910 < img_left.shape[1] < 960 assert img_left.shape[2] == 3 img_right = imgs["right"] assert 235 < img_right.shape[0] < 260 assert 910 < img_right.shape[1] < 960 assert img_right.shape[2] == 3