changeset 126:52e428b76a3d

Add tests for _load_raw with channel selection
author Amine Sehili <amine.sehili@gmail.com>
date Mon, 04 Feb 2019 21:51:22 +0100
parents aa0e5535f724
children 7db4af2fefe4
files tests/test_io.py
diffstat 1 files changed, 37 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test_io.py	Mon Feb 04 20:37:28 2019 +0100
+++ b/tests/test_io.py	Mon Feb 04 21:51:22 2019 +0100
@@ -7,13 +7,15 @@
 from unittest import TestCase
 from genty import genty, genty_dataset
 from auditok.io import (
+    DATA_FORMAT,
     AudioIOError,
-    DATA_FORMAT,
     AudioParameterError,
+    BufferAudioSource,
     check_audio_data,
     _array_to_bytes,
     _mix_audio_channels,
     _extract_selected_channel,
+    _load_raw,
     from_file,
     _save_raw,
     _save_wave,
@@ -360,6 +362,40 @@
                 )
 
     @genty_dataset(
+        dafault_first_channel=(None, 400),
+        first_channel=(0, 400),
+        second_channel=(1, 800),
+        third_channel=(2, 1600),
+        negative_first_channel=(-3, 400),
+        negative_second_channel=(-2, 800),
+        negative_third_channel=(-1, 1600),
+    )
+    def test_load_raw(self, use_channel, frequency):
+        filename = "tests/data/test_16KHZ_3channel_400-800-1600Hz.raw"
+        if use_channel is not None:
+            audio_source = _load_raw(
+                filename,
+                sampling_rate=16000,
+                sample_width=2,
+                channels=3,
+                use_channel=use_channel,
+            )
+        else:
+            audio_source = _load_raw(
+                filename, sampling_rate=16000, sample_width=2, channels=3
+            )
+        self.assertIsInstance(audio_source, BufferAudioSource)
+        self.assertEqual(audio_source.sampling_rate, 16000)
+        self.assertEqual(audio_source.sample_width, 2)
+        self.assertEqual(audio_source.channels, 1)
+        # generate a pure sine wave tone of the given frequency
+        expected = PURE_TONE_DICT[frequency]
+        # compre with data read from file
+        fmt = DATA_FORMAT[2]
+        data = array(fmt, audio_source._buffer)
+        self.assertEqual(data, expected)
+
+    @genty_dataset(
         mono=("mono_400Hz.wav", (400,)),
         three_channel=("3channel_400-800-1600Hz.wav", (400, 800, 1600)),
     )