from functools import partial from tempfile import NamedTemporaryFile import numpy as np import pytest from src.backend.utils import misc @pytest.mark.parametrize( "value,type_,expected", [ ("3", int, 3), (None, int, None), ("a", int, ValueError), (None, None, None), ("3", None, None), ], ) def test_astype_if(value, type_, expected): call = partial(misc.astype_if, value, type_) if isinstance(expected, type): with pytest.raises(expected): call() else: assert call() == expected @pytest.mark.parametrize( "value,expected", [ (np.nan, True), (float("nan"), True), (None, False), (1, False), ("a", False), ], ) def test_is_nan(value, expected): assert misc.is_nan(value) == expected @pytest.fixture def temp_env_file(content: str) -> NamedTemporaryFile: with NamedTemporaryFile(mode="w+", delete=True) as file: file.write(content) file.flush() file.seek(0) yield file @pytest.mark.parametrize( "content,expected", [ ("", {}), ("# comment", {}), ("a= ", {"a": ""}), ("a b", {}), ("a=1\nb=2", {"a": "1", "b": "2"}), ], ) def test_load_env(temp_env_file, content, expected): assert misc.load_env(temp_env_file.name) == expected