# HG changeset patch # User Amine Sehili # Date 1549313482 -3600 # Node ID 52e428b76a3dc11ff0323bf51cd5c552fa69b8c4 # Parent aa0e5535f7243f64dd73964a8a010e0d17bcdafd Add tests for _load_raw with channel selection diff -r aa0e5535f724 -r 52e428b76a3d tests/test_io.py --- 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)), )