Mercurial > hg > auditok
changeset 282:d40571459b37
Add test for PalyerWorker
author | Amine Sehili <amine.sehili@gmail.com> |
---|---|
date | Mon, 30 Sep 2019 21:33:16 +0100 |
parents | 28b373616977 |
children | 231fa912b809 |
files | tests/test_workers.py |
diffstat | 1 files changed, 48 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test_workers.py Mon Sep 30 21:09:24 2019 +0100 +++ b/tests/test_workers.py Mon Sep 30 21:33:16 2019 +0100 @@ -1,6 +1,6 @@ import os from unittest import TestCase -from unittest.mock import patch, call +from unittest.mock import patch, call, Mock from tempfile import TemporaryDirectory from genty import genty, genty_dataset from auditok import AudioDataSource @@ -38,7 +38,6 @@ self.reader.close() def test_TokenizerWorker(self): - with TemporaryDirectory() as tmpdir: file = os.path.join(tmpdir, "file.log") logger = make_logger(file=file, name="test_TokenizerWorker") @@ -71,6 +70,47 @@ # remove timestamp part and strip new line self.assertEqual(log_line[28:].strip(), exp_log_line) + def test_PlayerWorker(self): + with TemporaryDirectory() as tmpdir: + file = os.path.join(tmpdir, "file.log") + logger = make_logger(file=file, name="test_RegionSaverWorker") + player_mock = Mock() + observers = [PlayerWorker(player_mock, logger=logger)] + tokenizer = TokenizerWorker( + self.reader, + logger=logger, + observers=observers, + min_dur=0.3, + max_dur=2, + max_silence=0.2, + drop_trailing_silence=False, + strict_min_dur=False, + eth=50, + ) + tokenizer.start_all() + tokenizer.join() + tokenizer._observers[0].join() + # Get logged text + with open(file) as fp: + log_lines = [ + line + for line in fp.readlines() + if line.startswith("[PLAY]") + ] + self.assertTrue(player_mock.play.called) + + self.assertEqual(len(tokenizer.detections), len(self.expected)) + log_fmt = "[PLAY]: Detection {id} played" + for i, (det, exp, log_line) in enumerate( + zip(tokenizer.detections, self.expected, log_lines), 1 + ): + start, end = exp + exp_log_line = log_fmt.format(id=i) + self.assertAlmostEqual(det.start, start) + self.assertAlmostEqual(det.end, end) + # Remove timestamp part and strip new line + self.assertEqual(log_line[28:].strip(), exp_log_line) + def test_RegionSaverWorker(self): filename_format = ( "Region_{id}_{start:.6f}-{end:.3f}_{duration:.3f}.wav" @@ -102,7 +142,7 @@ if line.startswith("[SAVE]") ] - # Asser PrintWorker ran as expected + # Assert RegionSaverWorker ran as expected expected_save_calls = [ call( filename_format.format( @@ -113,7 +153,7 @@ for i, exp in enumerate(self.expected, 1) ] - # get calls to 'AudioRegion.save' + # Get calls to 'AudioRegion.save' mock_calls = [ c for i, c in enumerate(patched_save.mock_calls) if i % 2 == 0 ] @@ -131,7 +171,7 @@ exp_log_line = log_fmt.format(i, expected_filename) self.assertAlmostEqual(det.start, start) self.assertAlmostEqual(det.end, end) - # remove timestamp part and strip new line + # Remove timestamp part and strip new line self.assertEqual(log_line[28:].strip(), exp_log_line) def test_CommandLineWorker(self): @@ -163,11 +203,10 @@ if line.startswith("[COMMAND]") ] - # Asser PrintWorker ran as expected + # Assert CommandLineWorker ran as expected expected_save_calls = [call(command_format) for _ in self.expected] self.assertEqual(patched_os_system.mock_calls, expected_save_calls) self.assertEqual(len(tokenizer.detections), len(self.expected)) - log_fmt = "[COMMAND]: Detection {id} command '{command}'" for i, (det, exp, log_line) in enumerate( zip(tokenizer.detections, self.expected, log_lines), 1 @@ -176,7 +215,7 @@ exp_log_line = log_fmt.format(i, command_format) self.assertAlmostEqual(det.start, start) self.assertAlmostEqual(det.end, end) - # remove timestamp part and strip new line + # Remove timestamp part and strip new line self.assertEqual(log_line[28:].strip(), exp_log_line) def test_PrintWorker(self): @@ -198,7 +237,7 @@ tokenizer.join() tokenizer._observers[0].join() - # Asser PrintWorker ran as expected + # Assert PrintWorker ran as expected expected_print_calls = [ call( "[{}] {:.3f} {:.3f}, dur: {:.3f}".format( @@ -209,7 +248,6 @@ ] self.assertEqual(patched_print.mock_calls, expected_print_calls) self.assertEqual(len(tokenizer.detections), len(self.expected)) - for det, exp in zip(tokenizer.detections, self.expected): start, end = exp self.assertAlmostEqual(det.start, start)