changeset 419:c2ac3fc1bfbc

Add tests for AudioEventsJoinerWorker
author Amine Sehili <amine.sehili@gmail.com>
date Fri, 18 Oct 2024 23:16:08 +0200
parents 70abdb92149a
children f874558779b9
files tests/test_workers.py
diffstat 1 files changed, 58 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test_workers.py	Fri Oct 18 22:47:58 2024 +0200
+++ b/tests/test_workers.py	Fri Oct 18 23:16:08 2024 +0200
@@ -5,10 +5,10 @@
 import pytest
 
 import auditok.workers
-from auditok import AudioReader, AudioRegion
+from auditok import AudioReader, AudioRegion, split, split_and_join_with_silence
 from auditok.cmdline_util import make_logger
-from auditok.exceptions import AudioEncodingWarning
 from auditok.workers import (
+    AudioEventsJoinerWorker,
     CommandLineWorker,
     PlayerWorker,
     PrintWorker,
@@ -270,11 +270,22 @@
         assert saver.data == bytes(expected_region)
 
 
-def test_StreamSaverWorker_raw(audio_data_source):
+@pytest.mark.parametrize(
+    "export_format",
+    [
+        "raw",  # raw
+        "wav",  # wav
+    ],
+    ids=[
+        "raw",
+        "raw",
+    ],
+)
+def test_StreamSaverWorker(audio_data_source, export_format):
     with TemporaryDirectory() as tmpdir:
-        expected_filename = os.path.join(tmpdir, "output")
+        expected_filename = os.path.join(tmpdir, f"output.{export_format}")
         saver = StreamSaverWorker(
-            audio_data_source, expected_filename, export_format="raw"
+            audio_data_source, expected_filename, export_format=export_format
         )
         saver.start()
         tokenizer = TokenizerWorker(saver)
@@ -286,7 +297,7 @@
             "tests/data/test_split_10HZ_mono.raw", sr=10, sw=2, ch=1
         )
         expected_region = AudioRegion.load(
-            output_filename, sr=10, sw=2, ch=1, audio_format="raw"
+            output_filename, sr=10, sw=2, ch=1, audio_format=export_format
         )
         assert output_filename == expected_filename
         assert region == expected_region
@@ -300,10 +311,6 @@
             expected_filename = os.path.join(tmpdir, "output.ogg")
             tmp_expected_filename = expected_filename + ".wav"
             saver = StreamSaverWorker(audio_data_source, expected_filename)
-            print("########## saver._exported 1:", saver._exported)
-            # import auditok
-
-            # with pytest.raises(auditok.workers.AudioEncodingWarning) as rt_warn:
             saver.start()
             tokenizer = TokenizerWorker(saver)
             tokenizer.start_all()
@@ -347,3 +354,44 @@
         )
         assert not saver._exported
         assert saver.data == bytes(region)
+
+
+@pytest.mark.parametrize(
+    "export_format",
+    [
+        "raw",  # raw
+        "wav",  # wav
+    ],
+    ids=[
+        "raw",
+        "raw",
+    ],
+)
+def test_AudioEventsJoinerWorker(audio_data_source, export_format):
+    with TemporaryDirectory() as tmpdir:
+        expected_filename = os.path.join(tmpdir, f"output.{export_format}")
+        joiner = AudioEventsJoinerWorker(
+            silence_duration=1.0,
+            filename=expected_filename,
+            export_format=export_format,
+            sampling_rate=audio_data_source.sampling_rate,
+            sample_width=audio_data_source.sample_width,
+            channels=audio_data_source.channels,
+        )
+
+        tokenizer = TokenizerWorker(audio_data_source, observers=[joiner])
+        tokenizer.start_all()
+        tokenizer.join()
+        joiner.join()
+
+        output_filename = joiner.export_audio()
+        expected_region = split_and_join_with_silence(
+            "tests/data/test_split_10HZ_mono.raw",
+            silence_duration=1.0,
+            sr=10,
+            sw=2,
+            ch=1,
+            aw=0.1,
+        )
+        assert output_filename == expected_filename
+        assert joiner.data == bytes(expected_region)