test_settings_loader.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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 TestSettingLoader(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. del s1
  37. del s2
  38. def test_get_yaml_config(self):
  39. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  40. self.assertEqual(sl.yaml_config, self.settings_dict)
  41. del sl
  42. def test_get_settings(self):
  43. settings_object = Settings()
  44. settings_object.default_tts_name = "pico2wave"
  45. settings_object.default_stt_name = "google"
  46. settings_object.default_trigger_name = "snowboy"
  47. tts1 = Tts(name="pico2wave", parameters={'cache': True, 'language': 'fr-FR'})
  48. tts2 = Tts(name="voxygen", parameters={'voice': 'Agnes', 'cache': True})
  49. settings_object.ttss = [tts1, tts2]
  50. stt = Stt(name="google", parameters={'language': 'fr-FR'})
  51. settings_object.stts = [stt]
  52. settings_object.random_wake_up_answers = ['Oui monsieur?']
  53. settings_object.random_wake_up_sounds = ['ding.wav', 'dong.wav']
  54. trigger1 = Trigger(name="snowboy",
  55. parameters={'pmdl_file': 'trigger/snowboy/resources/kalliope-FR-6samples.pmdl'})
  56. settings_object.triggers = [trigger1]
  57. settings_object.rest_api = RestAPI(password_protected=True, active=True,
  58. login="admin", password="secret", port=5000)
  59. settings_object.cache_path = '/tmp/kalliope_tts_cache'
  60. settings_object.machine = platform.machine()
  61. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  62. self.assertEqual(settings_object, sl.settings)
  63. del sl
  64. def test_get_default_speech_to_text(self):
  65. expected_default_speech_to_text = "google"
  66. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  67. self.assertEqual(expected_default_speech_to_text, sl._get_default_speech_to_text(self.settings_dict))
  68. del sl
  69. def test_get_default_text_to_speech(self):
  70. expected_default_text_to_speech = "pico2wave"
  71. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  72. self.assertEqual(expected_default_text_to_speech, sl._get_default_text_to_speech(self.settings_dict))
  73. del sl
  74. def test_get_default_trigger(self):
  75. expected_default_trigger = "snowboy"
  76. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  77. self.assertEqual(expected_default_trigger, sl._get_default_trigger(self.settings_dict))
  78. del sl
  79. def test_get_stts(self):
  80. stt = Stt(name="google", parameters={'language': 'fr-FR'})
  81. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  82. self.assertEqual([stt], sl._get_stts(self.settings_dict))
  83. del sl
  84. def test_get_ttss(self):
  85. tts1 = Tts(name="pico2wave", parameters={'cache': True, 'language': 'fr-FR'})
  86. tts2 = Tts(name="voxygen", parameters={'voice': 'Agnes', 'cache': True})
  87. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  88. self.assertEqual([tts1, tts2], sl._get_ttss(self.settings_dict))
  89. del sl
  90. def test_get_triggers(self):
  91. trigger1 = Trigger(name="snowboy",
  92. parameters={'pmdl_file': 'trigger/snowboy/resources/kalliope-FR-6samples.pmdl'})
  93. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  94. self.assertEqual([trigger1], sl._get_triggers(self.settings_dict))
  95. del sl
  96. def test_get_random_wake_up_answers(self):
  97. expected_random_wake_up_answers = ['Oui monsieur?']
  98. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  99. self.assertEqual(expected_random_wake_up_answers, sl._get_random_wake_up_answers(self.settings_dict))
  100. del sl
  101. def test_get_rest_api(self):
  102. expected_rest_api = RestAPI(password_protected=True, active=True,
  103. login="admin", password="secret", port=5000)
  104. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  105. self.assertEqual(expected_rest_api, sl._get_rest_api(self.settings_dict))
  106. del sl
  107. def test_get_cache_path(self):
  108. expected_cache_path = '/tmp/kalliope_tts_cache'
  109. sl = SettingLoader.Instance(file_path=self.settings_file_to_test)
  110. self.assertEqual(expected_cache_path, sl._get_cache_path(self.settings_dict))
  111. del sl
  112. if __name__ == '__main__':
  113. unittest.main()