test_order_analyser2.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import unittest
  2. import logging
  3. from kalliope.core.Models import Brain
  4. from kalliope.core.Models import Neuron
  5. from kalliope.core.Models import Order
  6. from kalliope.core.Models import Synapse
  7. from kalliope.core.Models.Settings import Settings
  8. from kalliope.core.OrderAnalyser2 import OrderAnalyser2
  9. logging.basicConfig()
  10. logger = logging.getLogger("kalliope")
  11. logger.setLevel(logging.DEBUG)
  12. class TestOrderAnalyser2(unittest.TestCase):
  13. """Test case for the OrderAnalyser Class"""
  14. def setUp(self):
  15. pass
  16. def test_get_matching_synapse(self):
  17. # Init
  18. neuron1 = Neuron(name='neurone1', parameters={'var1': 'val1'})
  19. neuron2 = Neuron(name='neurone2', parameters={'var2': 'val2'})
  20. neuron3 = Neuron(name='neurone3', parameters={'var3': 'val3'})
  21. neuron4 = Neuron(name='neurone4', parameters={'var4': 'val4'})
  22. signal1 = Order(sentence="this is the sentence")
  23. signal2 = Order(sentence="this is the second sentence")
  24. signal3 = Order(sentence="that is part of the third sentence")
  25. synapse1 = Synapse(name="Synapse1", neurons=[neuron1, neuron2], signals=[signal1])
  26. synapse2 = Synapse(name="Synapse2", neurons=[neuron3, neuron4], signals=[signal2])
  27. synapse3 = Synapse(name="Synapse3", neurons=[neuron2, neuron4], signals=[signal3])
  28. all_synapse_list = [synapse1,
  29. synapse2,
  30. synapse3]
  31. br = Brain(synapses=all_synapse_list)
  32. # TEST1: should return synapse1
  33. spoken_order = "this is the sentence"
  34. matched_synapses = OrderAnalyser2.get_matching_synapse(order=spoken_order, brain=br)
  35. self.assertEqual(len(matched_synapses), 1)
  36. # TEST2: should empty
  37. spoken_order = "not a valid order"
  38. matched_synapses = OrderAnalyser2.get_matching_synapse(order=spoken_order, brain=br)
  39. self.assertFalse(matched_synapses)
  40. def test_spelt_order_match_brain_order_via_table(self):
  41. order_to_test = "this is the order"
  42. sentence_to_test = "this is the order"
  43. # Success
  44. self.assertTrue(OrderAnalyser2.spelt_order_match_brain_order_via_table(order_to_test, sentence_to_test))
  45. # Failure
  46. sentence_to_test = "unexpected sentence"
  47. self.assertFalse(OrderAnalyser2.spelt_order_match_brain_order_via_table(order_to_test, sentence_to_test))
  48. # Upper/lower cases
  49. sentence_to_test = "THIS is THE order"
  50. self.assertTrue(OrderAnalyser2.spelt_order_match_brain_order_via_table(order_to_test, sentence_to_test))
  51. def test_get_split_order_without_bracket(self):
  52. # Success
  53. order_to_test = "this is the order"
  54. expected_result = ["this", "is", "the", "order"]
  55. self.assertEqual(OrderAnalyser2._get_split_order_without_bracket(order_to_test), expected_result,
  56. "No brackets Fails to return the expected list")
  57. order_to_test = "this is the {{ order }}"
  58. expected_result = ["this", "is", "the"]
  59. self.assertEqual(OrderAnalyser2._get_split_order_without_bracket(order_to_test), expected_result,
  60. "With spaced brackets Fails to return the expected list")
  61. order_to_test = "this is the {{order }}" # left bracket without space
  62. expected_result = ["this", "is", "the"]
  63. self.assertEqual(OrderAnalyser2._get_split_order_without_bracket(order_to_test), expected_result,
  64. "Left brackets Fails to return the expected list")
  65. order_to_test = "this is the {{ order}}" # right bracket without space
  66. expected_result = ["this", "is", "the"]
  67. self.assertEqual(OrderAnalyser2._get_split_order_without_bracket(order_to_test), expected_result,
  68. "Right brackets Fails to return the expected list")
  69. order_to_test = "this is the {{order}}" # bracket without space
  70. expected_result = ["this", "is", "the"]
  71. self.assertEqual(OrderAnalyser2._get_split_order_without_bracket(order_to_test), expected_result,
  72. "No space brackets Fails to return the expected list")
  73. def test_counter_subset(self):
  74. list1 = ("word1", "word2")
  75. list2 = ("word3", "word4")
  76. list3 = ("word1", "word2", "word3", "word4")
  77. self.assertFalse(OrderAnalyser2._counter_subset(list1, list2))
  78. self.assertTrue(OrderAnalyser2._counter_subset(list1, list3))
  79. self.assertTrue(OrderAnalyser2._counter_subset(list2, list3))
  80. if __name__ == '__main__':
  81. unittest.main()