import platform import unittest from kalliope.core.ConfigurationManager import SettingLoader from kalliope.core.Models import Singleton from kalliope.core.Models.RestAPI import RestAPI from kalliope.core.Models.Settings import Settings from kalliope.core.Models.Stt import Stt from kalliope.core.Models.Trigger import Trigger from kalliope.core.Models.Tts import Tts class TestSettingLoader(unittest.TestCase): def setUp(self): self.settings_file_to_test = "../Tests/settings/settings_test.yml" self.settings_dict = { 'rest_api': {'active': True, 'login': 'admin', 'password': 'secret', 'password_protected': True, 'port': 5000}, 'default_trigger': 'snowboy', 'triggers': [{'snowboy': {'pmdl_file': 'trigger/snowboy/resources/kalliope-FR-6samples.pmdl'}}], 'speech_to_text': [{'google': {'language': 'fr-FR'}}], 'cache_path': '/tmp/kalliope_tts_cache', 'random_wake_up_answers': ['Oui monsieur?'], 'default_text_to_speech': 'pico2wave', 'default_speech_to_text': 'google', 'random_wake_up_sounds': ['ding.wav', 'dong.wav'], 'text_to_speech': [ {'pico2wave': {'cache': True, 'language': 'fr-FR'}}, {'voxygen': {'voice': 'Agnes', 'cache': True}} ] } def tearDown(self): Singleton._instances = {} def test_singleton(self): s1 = SettingLoader(file_path=self.settings_file_to_test) s2 = SettingLoader(file_path=self.settings_file_to_test) self.assertTrue(s1.settings is s2.settings) del s1 del s2 def test_get_yaml_config(self): sl = SettingLoader(file_path=self.settings_file_to_test) self.assertEqual(sl.yaml_config, self.settings_dict) del sl def test_get_settings(self): settings_object = Settings() settings_object.default_tts_name = "pico2wave" settings_object.default_stt_name = "google" settings_object.default_trigger_name = "snowboy" tts1 = Tts(name="pico2wave", parameters={'cache': True, 'language': 'fr-FR'}) tts2 = Tts(name="voxygen", parameters={'voice': 'Agnes', 'cache': True}) settings_object.ttss = [tts1, tts2] stt = Stt(name="google", parameters={'language': 'fr-FR'}) settings_object.stts = [stt] settings_object.random_wake_up_answers = ['Oui monsieur?'] settings_object.random_wake_up_sounds = ['ding.wav', 'dong.wav'] trigger1 = Trigger(name="snowboy", parameters={'pmdl_file': 'trigger/snowboy/resources/kalliope-FR-6samples.pmdl'}) settings_object.triggers = [trigger1] settings_object.rest_api = RestAPI(password_protected=True, active=True, login="admin", password="secret", port=5000) settings_object.cache_path = '/tmp/kalliope_tts_cache' settings_object.machine = platform.machine() sl = SettingLoader(file_path=self.settings_file_to_test) self.assertEqual(settings_object, sl.settings) del sl def test_get_default_speech_to_text(self): expected_default_speech_to_text = "google" sl = SettingLoader(file_path=self.settings_file_to_test) self.assertEqual(expected_default_speech_to_text, sl._get_default_speech_to_text(self.settings_dict)) del sl def test_get_default_text_to_speech(self): expected_default_text_to_speech = "pico2wave" sl = SettingLoader(file_path=self.settings_file_to_test) self.assertEqual(expected_default_text_to_speech, sl._get_default_text_to_speech(self.settings_dict)) del sl def test_get_default_trigger(self): expected_default_trigger = "snowboy" sl = SettingLoader(file_path=self.settings_file_to_test) self.assertEqual(expected_default_trigger, sl._get_default_trigger(self.settings_dict)) del sl def test_get_stts(self): stt = Stt(name="google", parameters={'language': 'fr-FR'}) sl = SettingLoader(file_path=self.settings_file_to_test) self.assertEqual([stt], sl._get_stts(self.settings_dict)) del sl def test_get_ttss(self): tts1 = Tts(name="pico2wave", parameters={'cache': True, 'language': 'fr-FR'}) tts2 = Tts(name="voxygen", parameters={'voice': 'Agnes', 'cache': True}) sl = SettingLoader(file_path=self.settings_file_to_test) self.assertEqual([tts1, tts2], sl._get_ttss(self.settings_dict)) del sl def test_get_triggers(self): trigger1 = Trigger(name="snowboy", parameters={'pmdl_file': 'trigger/snowboy/resources/kalliope-FR-6samples.pmdl'}) sl = SettingLoader(file_path=self.settings_file_to_test) self.assertEqual([trigger1], sl._get_triggers(self.settings_dict)) del sl def test_get_random_wake_up_answers(self): expected_random_wake_up_answers = ['Oui monsieur?'] sl = SettingLoader(file_path=self.settings_file_to_test) self.assertEqual(expected_random_wake_up_answers, sl._get_random_wake_up_answers(self.settings_dict)) del sl def test_get_rest_api(self): expected_rest_api = RestAPI(password_protected=True, active=True, login="admin", password="secret", port=5000) sl = SettingLoader(file_path=self.settings_file_to_test) self.assertEqual(expected_rest_api, sl._get_rest_api(self.settings_dict)) del sl def test_get_cache_path(self): expected_cache_path = '/tmp/kalliope_tts_cache' sl = SettingLoader(file_path=self.settings_file_to_test) self.assertEqual(expected_cache_path, sl._get_cache_path(self.settings_dict)) del sl if __name__ == '__main__': unittest.main()