test_launchers.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import unittest
  2. import mock
  3. import os
  4. from kalliope.core.NeuronLauncher import NeuronLauncher
  5. from kalliope.core.SynapseLauncher import SynapseLauncher, SynapseNameNotFound
  6. from kalliope.core.TriggerLauncher import TriggerLauncher
  7. from kalliope.core.Models.Trigger import Trigger
  8. from kalliope.core.Models.Neuron import Neuron
  9. from kalliope.core.Models.Order import Order
  10. from kalliope.core.Models.Brain import Brain
  11. from kalliope.core.Models.Synapse import Synapse
  12. class TestLaunchers(unittest.TestCase):
  13. """
  14. Class to test Launchers Classes (TriggerLauncher, SynapseLauncher, NeuronLauncher) and methods
  15. """
  16. def setUp(self):
  17. pass
  18. ####
  19. # Trigger Launcher
  20. def test_get_trigger(self):
  21. """
  22. Test the Trigger Launcher trying to run the trigger
  23. """
  24. trigger = Trigger("Trigger", {})
  25. with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation") as mock_get_class_instantiation:
  26. TriggerLauncher.get_trigger(trigger=trigger,
  27. callback=None)
  28. mock_get_class_instantiation.assert_called_once_with("trigger",
  29. trigger.name.capitalize(),
  30. trigger.parameters)
  31. mock_get_class_instantiation.reset_mock()
  32. ####
  33. # Synapse Launcher
  34. def test_start_synapse(self):
  35. """
  36. Test the Synapse launcher trying to start synapse
  37. """
  38. # Init
  39. neuron1 = Neuron(name='neurone1', parameters={'var1': 'val1'})
  40. neuron2 = Neuron(name='neurone2', parameters={'var2': 'val2'})
  41. neuron3 = Neuron(name='neurone3', parameters={'var3': 'val3'})
  42. neuron4 = Neuron(name='neurone4', parameters={'var4': 'val4'})
  43. signal1 = Order(sentence="this is the sentence")
  44. signal2 = Order(sentence="this is the second sentence")
  45. signal3 = Order(sentence="that is part of the third sentence")
  46. synapse1 = Synapse(name="Synapse1", neurons=[neuron1, neuron2], signals=[signal1])
  47. synapse2 = Synapse(name="Synapse2", neurons=[neuron3, neuron4], signals=[signal2])
  48. synapse3 = Synapse(name="Synapse3", neurons=[neuron2, neuron4], signals=[signal3])
  49. all_synapse_list = [synapse1,
  50. synapse2,
  51. synapse3]
  52. br = Brain(synapses=all_synapse_list)
  53. with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation") as mock_get_class_instantiation:
  54. # Success
  55. SynapseLauncher.start_synapse("Synapse1", brain=br)
  56. calls = [mock.call("neurons", neuron1.name.capitalize(), neuron1.parameters),
  57. mock.call("neurons", neuron2.name.capitalize(), neuron2.parameters)]
  58. mock_get_class_instantiation.assert_has_calls(calls=calls)
  59. mock_get_class_instantiation.reset_mock()
  60. # Fail
  61. with self.assertRaises(SynapseNameNotFound):
  62. SynapseLauncher.start_synapse("Synapse4", brain=br)
  63. def test_run_synapse(self):
  64. """
  65. Test to run a Synapse
  66. """
  67. neuron1 = Neuron(name='neurone1', parameters={'var1': 'val1'})
  68. neuron2 = Neuron(name='neurone2', parameters={'var2': 'val2'})
  69. signal1 = Order(sentence="this is the sentence")
  70. synapse1 = Synapse(name="Synapse1", neurons=[neuron1, neuron2], signals=[signal1])
  71. synapse_empty = Synapse(name="Synapse_empty", neurons=[], signals=[signal1])
  72. with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation") as mock_get_class_instantiation:
  73. SynapseLauncher._run_synapse(synapse=synapse1)
  74. calls = [mock.call("neurons",neuron1.name.capitalize(),neuron1.parameters),
  75. mock.call("neurons",neuron2.name.capitalize(),neuron2.parameters)]
  76. mock_get_class_instantiation.assert_has_calls(calls=calls)
  77. mock_get_class_instantiation.reset_mock()
  78. # Do not any Neurons
  79. SynapseLauncher._run_synapse(synapse=synapse_empty)
  80. mock_get_class_instantiation.assert_not_called()
  81. mock_get_class_instantiation.reset_mock()
  82. ####
  83. # Neurons Launcher
  84. def test_start_neuron(self):
  85. """
  86. Test the Neuron Launcher trying to start a Neuron
  87. """
  88. neuron = Neuron(name='neurone1', parameters={'var1': 'val1'})
  89. with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation") as mock_get_class_instantiation:
  90. NeuronLauncher.start_neuron(neuron=neuron)
  91. mock_get_class_instantiation.assert_called_once_with("neurons",
  92. neuron.name.capitalize(),
  93. neuron.parameters)
  94. mock_get_class_instantiation.reset_mock()