test_settings_loader.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import platform
  2. import unittest
  3. from core.ConfigurationManager import SettingLoader
  4. from core.Models.RestAPI import RestAPI
  5. from core.Models.Settings import Settings
  6. from core.Models.Stt import Stt
  7. from core.Models.Trigger import Trigger
  8. from core.Models.Tts import Tts
  9. class TestSettingsoader(unittest.TestCase):
  10. def setUp(self):
  11. self.settings_file_to_test = "core/Tests/settings/settings_test.yml"
  12. self.settings_dict = {
  13. 'rest_api':
  14. {'active': True,
  15. 'login': 'admin',
  16. 'password': 'secret',
  17. 'password_protected': True,
  18. 'port': 5000},
  19. 'default_trigger': 'snowboy',
  20. 'triggers': [{'snowboy': {'pmdl_file': 'trigger/snowboy/resources/kalliope-FR-6samples.pmdl'}}],
  21. 'speech_to_text': [{'google': {'language': 'fr-FR'}}],
  22. 'cache_path': '/tmp/kalliope_tts_cache',
  23. 'random_wake_up_answers': ['Oui monsieur?'],
  24. 'default_text_to_speech': 'pico2wave',
  25. 'default_speech_to_text': 'google',
  26. 'random_wake_up_sounds': ['ding.wav', 'dong.wav'],
  27. 'text_to_speech': [
  28. {'pico2wave': {'cache': True, 'language': 'fr-FR'}},
  29. {'voxygen': {'voice': 'Agnes', 'cache': True}}
  30. ]
  31. }
  32. def test_singleton(self):
  33. s1 = SettingLoader.Instance(file_path=self.settings_file_to_test)
  34. s2 = SettingLoader.Instance(file_path=self.settings_file_to_test)
  35. self.assertTrue(s1.settings is s2.settings)
  36. def test_get_yaml_config(self):
  37. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  38. self.assertEqual(sl.yaml_config, self.settings_dict)
  39. def test_get_settings(self):
  40. settings_object = Settings()
  41. settings_object.default_tts_name = "pico2wave"
  42. settings_object.default_stt_name = "google"
  43. settings_object.default_trigger_name = "snowboy"
  44. tts1 = Tts(name="pico2wave", parameters={'cache': True, 'language': 'fr-FR'})
  45. tts2 = Tts(name="voxygen", parameters={'voice': 'Agnes', 'cache': True})
  46. settings_object.ttss = [tts1, tts2]
  47. stt = Stt(name="google", parameters={'language': 'fr-FR'})
  48. settings_object.stts = [stt]
  49. settings_object.random_wake_up_answers = ['Oui monsieur?']
  50. settings_object.random_wake_up_sounds = ['ding.wav', 'dong.wav']
  51. trigger1 = Trigger(name="snowboy",
  52. parameters={'pmdl_file': 'trigger/snowboy/resources/kalliope-FR-6samples.pmdl'})
  53. settings_object.triggers = [trigger1]
  54. settings_object.rest_api = RestAPI(password_protected=True, active=True,
  55. login="admin", password="secret", port=5000)
  56. settings_object.cache_path = '/tmp/kalliope_tts_cache'
  57. settings_object.machine = platform.machine()
  58. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  59. self.assertEqual(settings_object, sl.settings)
  60. def test_get_default_speech_to_text(self):
  61. expected_default_speech_to_text = "google"
  62. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  63. self.assertEqual(expected_default_speech_to_text, sl._get_default_speech_to_text(self.settings_dict))
  64. def test_get_default_text_to_speech(self):
  65. expected_default_text_to_speech = "pico2wave"
  66. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  67. self.assertEqual(expected_default_text_to_speech, sl._get_default_text_to_speech(self.settings_dict))
  68. def test_get_default_trigger(self):
  69. expected_default_trigger = "snowboy"
  70. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  71. self.assertEqual(expected_default_trigger, sl._get_default_trigger(self.settings_dict))
  72. def test_get_stts(self):
  73. stt = Stt(name="google", parameters={'language': 'fr-FR'})
  74. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  75. self.assertEqual([stt], sl._get_stts(self.settings_dict))
  76. def test_get_ttss(self):
  77. tts1 = Tts(name="pico2wave", parameters={'cache': True, 'language': 'fr-FR'})
  78. tts2 = Tts(name="voxygen", parameters={'voice': 'Agnes', 'cache': True})
  79. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  80. self.assertEqual([tts1, tts2], sl._get_ttss(self.settings_dict))
  81. def test_get_triggers(self):
  82. trigger1 = Trigger(name="snowboy",
  83. parameters={'pmdl_file': 'trigger/snowboy/resources/kalliope-FR-6samples.pmdl'})
  84. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  85. self.assertEqual([trigger1], sl._get_triggers(self.settings_dict))
  86. def test_get_random_wake_up_answers(self):
  87. expected_random_wake_up_answers = ['Oui monsieur?']
  88. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  89. self.assertEqual(expected_random_wake_up_answers, sl._get_random_wake_up_answers(self.settings_dict))
  90. def test_get_rest_api(self):
  91. expected_rest_api = RestAPI(password_protected=True, active=True,
  92. login="admin", password="secret", port=5000)
  93. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  94. self.assertEqual(expected_rest_api, sl._get_rest_api(self.settings_dict))
  95. def test_get_cache_path(self):
  96. expected_cache_path = '/tmp/kalliope_tts_cache'
  97. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  98. self.assertEqual(expected_cache_path, sl._get_cache_path(self.settings_dict))
  99. if __name__ == '__main__':
  100. unittest.main()