comparison tests/test_io.py @ 131:92a6f1d5f265

Add tests for _load_with_pydub
author Amine Sehili <amine.sehili@gmail.com>
date Sat, 09 Feb 2019 18:01:00 +0100
parents 7c5f325dae7a
children a9d74315f2ee
comparison
equal deleted inserted replaced
130:7c5f325dae7a 131:92a6f1d5f265
16 _array_to_bytes, 16 _array_to_bytes,
17 _mix_audio_channels, 17 _mix_audio_channels,
18 _extract_selected_channel, 18 _extract_selected_channel,
19 _load_raw, 19 _load_raw,
20 _load_wave, 20 _load_wave,
21 _load_with_pydub,
21 from_file, 22 from_file,
22 _save_raw, 23 _save_raw,
23 _save_wave, 24 _save_wave,
24 ) 25 )
25 26
490 self.assertIsInstance(audio_source, BufferAudioSource) 491 self.assertIsInstance(audio_source, BufferAudioSource)
491 self.assertEqual(audio_source.sampling_rate, sampling_rate) 492 self.assertEqual(audio_source.sampling_rate, sampling_rate)
492 self.assertEqual(audio_source.sample_width, sample_width) 493 self.assertEqual(audio_source.sample_width, sample_width)
493 self.assertEqual(audio_source.channels, 1) 494 self.assertEqual(audio_source.channels, 1)
494 495
496 @patch("auditok.io._WITH_PYDUB", True)
497 @patch("auditok.io.BufferAudioSource")
498 @genty_dataset(
499 ogg_default_first_channel=("ogg", 2, None, "from_ogg"),
500 ogg_first_channel=("ogg", 1, 0, "from_ogg"),
501 ogg_second_channel=("ogg", 2, 1, "from_ogg"),
502 ogg_mix_channels=("ogg", 3, "mix", "from_ogg"),
503 mp3_left_channel=("mp3", 1, "left", "from_mp3"),
504 mp3_right_channel=("mp3", 2, "right", "from_mp3"),
505 mp3_mix_channels=("mp3", 3, "mix", "from_mp3"),
506 flac_first_channel=("flac", 2, 0, "from_file"),
507 flac_second_channel=("flac", 2, 1, "from_file"),
508 flv_left_channel=("flv", 1, "left", "from_flv"),
509 webm_right_channel=("webm", 2, "right", "from_file"),
510 webm_mix_channels=("webm", 4, "mix", "from_file"),
511 )
512 def test_load_with_pydub(
513 self, audio_format, channels, use_channel, function, *mocks
514 ):
515 filename = "audio.{}".format(audio_format)
516 segment_mock = Mock()
517 segment_mock.sample_width = 2
518 segment_mock.channels = channels
519 segment_mock._data = b"abcdefgh"
520 with patch("auditok.io._extract_selected_channel") as ext_mock:
521 with patch(
522 "auditok.io.AudioSegment.{}".format(function)
523 ) as open_func:
524 open_func.return_value = segment_mock
525 use_channel = {"left": 0, "right": 1, None: 0}.get(
526 use_channel, use_channel
527 )
528 _load_with_pydub(filename, audio_format, use_channel)
529 self.assertTrue(open_func.called)
530 if channels > 1:
531 self.assertTrue(ext_mock.called)
532 ext_mock.assert_called_with(
533 segment_mock._data,
534 segment_mock.channels,
535 segment_mock.sample_width,
536 use_channel,
537 )
538 else:
539 self.assertFalse(ext_mock.called)
540
495 @genty_dataset( 541 @genty_dataset(
496 mono=("mono_400Hz.wav", (400,)), 542 mono=("mono_400Hz.wav", (400,)),
497 three_channel=("3channel_400-800-1600Hz.wav", (400, 800, 1600)), 543 three_channel=("3channel_400-800-1600Hz.wav", (400, 800, 1600)),
498 ) 544 )
499 def test_save_wave(self, filename, frequencies): 545 def test_save_wave(self, filename, frequencies):