changeset 161:e91d97f7a632

Add tests for WaveAudioSource
author Amine Sehili <amine.sehili@gmail.com>
date Thu, 28 Feb 2019 20:48:10 +0100
parents 017994445d87
children ee883f8c372b
files tests/test_audio_source.py
diffstat 1 files changed, 32 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test_audio_source.py	Wed Feb 27 21:16:44 2019 +0100
+++ b/tests/test_audio_source.py	Thu Feb 28 20:48:10 2019 +0100
@@ -63,6 +63,38 @@
         expected = expected
         self.assertEqual(data, expected)
 
+    @genty_dataset(
+        mono_default=("mono_400Hz", 1, None, 400),
+        mono_mix=("mono_400Hz", 1, "mix", 400),
+        mono_channel_selection=("mono_400Hz", 1, 2, 400),
+        multichannel_default=("3channel_400-800-1600Hz", 3, None, 400),
+        multichannel_channel_selection=("3channel_400-800-1600Hz", 3, 1, 800),
+    )
+    def test_WaveAudioSource(
+        self, file_suffix, channels, use_channel, frequency
+    ):
+        file = "tests/data/test_16KHZ_{}.wav".format(file_suffix)
+        audio_source = WaveAudioSource(file, use_channel)
+        audio_source.open()
+        data = b"".join(audio_source_read_all_gen(audio_source))
+        audio_source.close()
+        expected = _array_to_bytes(PURE_TONE_DICT[frequency])
+        self.assertEqual(data, expected)
+
+    def test_WaveAudioSource_mix(self):
+        file = "tests/data/test_16KHZ_3channel_400-800-1600Hz.wav"
+        audio_source = WaveAudioSource(file, use_channel="mix")
+        audio_source.open()
+        data = b"".join(audio_source_read_all_gen(audio_source))
+        audio_source.close()
+
+        mono_channels = [PURE_TONE_DICT[freq] for freq in [400, 800, 1600]]
+        fmt = DATA_FORMAT[2]
+        expected = _array_to_bytes(
+            array(fmt, (sum(samples) // 3 for samples in zip(*mono_channels)))
+        )
+        self.assertEqual(data, expected)
+
 
 class TestBufferAudioSource_SR10_SW1_CH1(unittest.TestCase):
     def setUp(self):