test_brain_loader.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import unittest
  2. from core.ConfigurationManager import BrainLoader
  3. from core.Models import Brain
  4. from core.Models import Event
  5. from core.Models import Neuron
  6. from core.Models import Order
  7. from core.Models import Synapse
  8. class TestBrainLoader(unittest.TestCase):
  9. def setUp(self):
  10. self.brain_to_test = "core/Tests/brains/brain_test.yml"
  11. self.expected_result = [
  12. {'signals': [{'order': 'test_order'}],
  13. 'neurons': [{'say': {'message': ['test message']}}],
  14. 'name': 'test'},
  15. {'signals': [{'order': 'test_order_2'}],
  16. 'neurons': [{'say': {'message': ['test message']}}],
  17. 'name': 'test2'},
  18. {'includes': ['included_brain_test.yml']},
  19. {'signals': [{'order': 'test_order_3'}],
  20. 'neurons': [{'say': {'message': ['test message']}}],
  21. 'name': 'test3'}
  22. ]
  23. def test_get_yaml_config(self):
  24. """
  25. Test we can get a yaml config from the path
  26. """
  27. brain_loader = BrainLoader.Instance(file_path=self.brain_to_test)
  28. self.assertEqual(brain_loader.yaml_config, self.expected_result)
  29. del brain_loader
  30. def test_get_brain(self):
  31. """
  32. Test the class return a valid brain object
  33. """
  34. neuron = Neuron(name='say', parameters={'message': ['test message']})
  35. signal1 = Order(sentence="test_order")
  36. signal2 = Order(sentence="test_order_2")
  37. signal3 = Order(sentence="test_order_3")
  38. synapse1 = Synapse(name="test", neurons=[neuron], signals=[signal1])
  39. synapse2 = Synapse(name="test2", neurons=[neuron], signals=[signal2])
  40. synapse3 = Synapse(name="test3", neurons=[neuron], signals=[signal3])
  41. synapses = [synapse1, synapse2, synapse3]
  42. brain = Brain()
  43. brain.synapses = synapses
  44. brain.brain_file = self.brain_to_test
  45. brain.brain_yaml = self.expected_result
  46. brain_loader = BrainLoader.Instance(file_path=self.brain_to_test)
  47. self.assertEqual(brain, brain_loader.brain)
  48. del brain_loader
  49. def test_get_neurons(self):
  50. neuron_list = [{'say': {'message': ['test message']}}]
  51. neuron = Neuron(name='say', parameters={'message': ['test message']})
  52. bl = BrainLoader.Instance(file_path=self.brain_to_test)
  53. neurons_from_brain_loader = bl._get_neurons(neuron_list)
  54. self.assertEqual([neuron], neurons_from_brain_loader)
  55. del bl
  56. def test_get_signals(self):
  57. signals = [{'order': 'test_order'}]
  58. signal = Order(sentence='test_order')
  59. bl = BrainLoader.Instance(file_path=self.brain_to_test)
  60. signals_from_brain_loader = bl._get_signals(signals)
  61. self.assertEqual([signal], signals_from_brain_loader)
  62. del bl
  63. def test_get_event_or_order_from_dict(self):
  64. order_object = Order(sentence="test_order")
  65. event_object = Event(period="0 7 * * *")
  66. dict_order = {'order': 'test_order'}
  67. dict_event = {'event': '0 7 * * *'}
  68. bl = BrainLoader.Instance(file_path=self.brain_to_test)
  69. order_from_bl = bl._get_event_or_order_from_dict(dict_order)
  70. event_from_bl = bl._get_event_or_order_from_dict(dict_event)
  71. self.assertEqual(order_from_bl, order_object)
  72. self.assertEqual(event_from_bl, event_object)
  73. del bl
  74. def test_singleton(self):
  75. bl1 = BrainLoader.Instance(file_path=self.brain_to_test)
  76. bl2 = BrainLoader.Instance(file_path=self.brain_to_test)
  77. self.assertTrue(bl1.brain is bl2.brain)
  78. del bl1
  79. del bl2
  80. if __name__ == '__main__':
  81. unittest.main()