diff --git a/tests/test_api.py b/tests/test_api.py index d28c733..e828c9e 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1,14 +1,13 @@ """Test bat detect module API.""" -from pathlib import Path - import os from glob import glob +from pathlib import Path import numpy as np +import soundfile as sf import torch from torch import nn -import soundfile as sf from batdetect2 import api @@ -267,7 +266,6 @@ def test_process_file_with_spec_slices(): assert len(results["spec_slices"]) == len(detections) - def test_process_file_with_empty_predictions_does_not_fail( tmp_path: Path, ): diff --git a/tests/test_model.py b/tests/test_model.py new file mode 100644 index 0000000..7e5d997 --- /dev/null +++ b/tests/test_model.py @@ -0,0 +1,47 @@ +"""Test suite for model functions.""" + +import warnings + +import numpy as np +from hypothesis import given, settings +from hypothesis import strategies as st + +from batdetect2 import api +from batdetect2.detector import parameters + + +def test_can_import_model_without_warnings(): + with warnings.catch_warnings(): + warnings.simplefilter("error") + api.load_model() + + +@settings(deadline=None, max_examples=5) +@given(duration=st.floats(min_value=0.1, max_value=2)) +def test_can_import_model_without_pickle(duration: float): + # NOTE: remove this test once no other issues are found This is a temporary + # test to check that change in model loading did not impact model behaviour + # in any way. + + samplerate = parameters.TARGET_SAMPLERATE_HZ + audio = np.random.rand(int(duration * samplerate)) + + model_without_pickle, model_params_without_pickle = api.load_model( + weights_only=True + ) + model_with_pickle, model_params_with_pickle = api.load_model( + weights_only=False + ) + + assert model_params_without_pickle == model_params_with_pickle + + predictions_without_pickle, _, _ = api.process_audio( + audio, + model=model_without_pickle, + ) + predictions_with_pickle, _, _ = api.process_audio( + audio, + model=model_with_pickle, + ) + + assert predictions_without_pickle == predictions_with_pickle