123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- import os
- import unittest
- import mock
- from kalliope.core.Models.Settings import Settings
- from kalliope.core.TTS.TTSModule import TTSModule, TtsGenerateAudioFunctionNotFound
- from kalliope.core.Utils.FileManager import FileManager
- class TestTTSModule(unittest.TestCase):
- """
- Class to test TTSModule
- """
- def setUp(self):
- self.TTSMod = TTSModule(language='tests')
- pass
- def test_generate_md5_from_words(self):
- """
- Test generate md5 method
- """
- word = "kalliope"
- expected_result = "5c186d1e123be2667fb5fd54640e4fd0"
- self.assertEqual(TTSModule.generate_md5_from_words(words=word),
- expected_result,
- "Fail md5")
- def test_get_path_to_store_audio(self):
- """
- Test the path to store audio
- """
- self.TTSMod.words = "kalliope"
- settings = Settings(cache_path="/tmp/kalliope/tests")
- self.TTSMod.settings = settings
- expected_result = "/tmp/kalliope/tests/TTSModule/tests/default/5c186d1e123be2667fb5fd54640e4fd0.tts"
- self.assertEqual(self.TTSMod._get_path_to_store_audio(),
- expected_result,
- "fail test_get_path_to_store_audio, expected path not corresponding to result")
- def test_generate_and_play(self):
- """
- Test to generate and play sound
- """
- def new_play_audio(TTSModule):
- pass
- words = "kalliope"
- with mock.patch.object(TTSModule, 'play_audio', new=new_play_audio):
- settings = Settings(cache_path="/tmp/kalliope/tests")
- self.TTSMod.settings = settings
- # test missing callback
- with self.assertRaises(TtsGenerateAudioFunctionNotFound):
- self.TTSMod.generate_and_play(words=words)
- # Assert Callback is called
- # no Cache
- self.TTSMod.cache = False
- generate_audio_function_from_child = mock.Mock()
- self.TTSMod.generate_and_play(words=words,
- generate_audio_function_from_child=generate_audio_function_from_child)
- generate_audio_function_from_child.assert_called()
- # with cache True but not existing on system
- self.TTSMod.cache = True
- generate_audio_function_from_child = mock.Mock()
- self.TTSMod.generate_and_play(words=words,
- generate_audio_function_from_child=generate_audio_function_from_child)
- generate_audio_function_from_child.assert_called()
- # with cache True and existing on system
- # create tmp file
- tmp_base_path = "/tmp/kalliope/tests/TTSModule/tests/default/"
- file_path = os.path.join(tmp_base_path, "5c186d1e123be2667fb5fd54640e4fd0.tts")
- if os.path.isfile(file_path):
- # Remove the file
- FileManager.remove_file(file_path)
- if not os.path.exists(tmp_base_path):
- os.makedirs(tmp_base_path)
- FileManager.write_in_file(file_path, "[kalliope-test] test_generate_and_play")
- self.TTSMod.cache = True
- generate_audio_function_from_child = mock.Mock()
- self.TTSMod.generate_and_play(words=words,
- generate_audio_function_from_child=generate_audio_function_from_child)
- generate_audio_function_from_child.assert_not_called()
- # Remove the tmp file
- FileManager.remove_file(file_path)
- def test_is_file_already_in_cache(self):
- """
- Test if file is already stored in cache
- """
- base_cache_path = "/tmp/kalliope/tests/TTSModule/tests/default/"
- md5_word = "5c186d1e123be2667fb5fd54640e4fd0"
- file_path = os.path.join(base_cache_path, "5c186d1e123be2667fb5fd54640e4fd0.tts")
- if os.path.isfile(file_path):
- # Remove the file
- FileManager.remove_file(file_path)
- # Create a tmp file
- if not os.path.exists(base_cache_path):
- os.makedirs(base_cache_path)
- tmp_path = os.path.join(base_cache_path, md5_word+".tts")
- FileManager.write_in_file(tmp_path, "[kalliope-test] test_is_file_already_in_cache")
- # Test true
- self.assertTrue(TTSModule._is_file_already_in_cache(base_cache_path=base_cache_path, file_path=file_path),
- "Fail retrieving the cached file. The file does not exist but it should !")
- # Remove the tmp file
- FileManager.remove_file(tmp_path)
- # Test False
- self.assertFalse(TTSModule._is_file_already_in_cache(base_cache_path=base_cache_path, file_path=file_path),
- "Fail asserting that the file does not exist.")
- if __name__ == '__main__':
- unittest.main()
|