소스 검색

Merge pull request #237 from kalliope-project/fix_brainloader_int

[Fix] [Test] #236 Manage integer in neuron parameters when loading brain
Nicolas Marcq 8 년 전
부모
커밋
745bfa4814
4개의 변경된 파일36개의 추가작업 그리고 3개의 파일을 삭제
  1. 7 0
      Tests/brains/brain_test.yml
  2. 20 1
      Tests/test_brain_loader.py
  3. 8 1
      Tests/test_yaml_loader.py
  4. 1 1
      kalliope/core/ConfigurationManager/BrainLoader.py

+ 7 - 0
Tests/brains/brain_test.yml

@@ -15,5 +15,12 @@
           message:
             - "test message"
 
+  - name: "testint"
+    signals:
+      - order: "order_for_int"
+    neurons:
+      - sleep:
+          seconds: 60
+
   - includes:
     - included_brain_test.yml

+ 20 - 1
Tests/test_brain_loader.py

@@ -27,6 +27,9 @@ class TestBrainLoader(unittest.TestCase):
             {'signals': [{'order': 'test_order_2'}],
              'neurons': [{'say': {'message': ['test message']}}],
              'name': 'test2'},
+            {'signals': [{'order': 'order_for_int'}],
+             'neurons': [{'sleep': {'seconds': 60}}],
+             'name': 'testint'},
             {'includes': ['included_brain_test.yml']},
             {'signals': [{'order': 'test_order_3'}],
              'neurons': [{'say': {'message': ['test message']}}],
@@ -49,15 +52,18 @@ class TestBrainLoader(unittest.TestCase):
         """
 
         neuron = Neuron(name='say', parameters={'message': ['test message']})
+        neuron2 = Neuron(name='sleep', parameters={'seconds': 60})
 
         signal1 = Order(sentence="test_order")
         signal2 = Order(sentence="test_order_2")
         signal3 = Order(sentence="test_order_3")
+        signal4 = Order(sentence="order_for_int")
 
         synapse1 = Synapse(name="test", neurons=[neuron], signals=[signal1])
         synapse2 = Synapse(name="test2", neurons=[neuron], signals=[signal2])
         synapse3 = Synapse(name="test3", neurons=[neuron], signals=[signal3])
-        synapses = [synapse1, synapse2, synapse3]
+        synapse4 = Synapse(name="testint", neurons=[neuron2], signals=[signal4])
+        synapses = [synapse1, synapse2, synapse4, synapse3]
 
         brain = Brain()
         brain.synapses = synapses
@@ -73,6 +79,7 @@ class TestBrainLoader(unittest.TestCase):
         scenarii:
             - 1/ get a simple neuron from the brainloader
             - 2/ get a neuron with global variables as parameters
+            - 3/ get a neuron with int as parameters
         """
         # 1/ get a simple neuron from the brainloader
         st = Settings()
@@ -102,6 +109,18 @@ class TestBrainLoader(unittest.TestCase):
 
         self.assertEqual([neuron], neurons_from_brain_loader)
 
+        # 3/ get a neuron with int as parameters
+        st = Settings()
+        neuron_list = [{'sleep': {'seconds': 60}}]
+
+        neuron = Neuron(name='sleep', parameters={'seconds': 60})
+
+        bl = BrainLoader(file_path=self.brain_to_test)
+        neurons_from_brain_loader = bl._get_neurons(neuron_list,
+                                                    settings=st)
+
+        self.assertEqual([neuron], neurons_from_brain_loader)
+
     def test_get_signals(self):
         signals = [{'order': 'test_order'}]
 

+ 8 - 1
Tests/test_yaml_loader.py

@@ -14,7 +14,11 @@ class TestYAMLLoader(unittest.TestCase):
 
     def test_get_config(self):
 
-        valid_file_path_to_test = os.getcwd() + os.sep + "Tests/brains/brain_test.yml"
+        if "/Tests" in os.getcwd():
+            valid_file_path_to_test = os.getcwd() + os.sep + "brains/brain_test.yml"
+        else:
+            valid_file_path_to_test = os.getcwd() + os.sep + "Tests/brains/brain_test.yml"
+
         invalid_file_path = "brains/non_existing_brain.yml"
         expected_result = [
             {'signals': [{'order': 'test_order'}],
@@ -23,6 +27,9 @@ class TestYAMLLoader(unittest.TestCase):
             {'signals': [{'order': 'test_order_2'}],
              'neurons': [{'say': {'message': ['test message']}}],
              'name': 'test2'},
+            {'signals': [{'order': 'order_for_int'}],
+             'neurons': [{'sleep': {'seconds': 60}}],
+             'name': 'testint'},
             {'includes': ['included_brain_test.yml']},
             {'signals': [{'order': 'test_order_3'}],
              'neurons': [{'say': {'message': ['test message']}}],

+ 1 - 1
kalliope/core/ConfigurationManager/BrainLoader.py

@@ -267,7 +267,7 @@ class BrainLoader(object):
             for el in parameter:
                 new_parameter_list.append(cls._replace_global_variables(el, settings=settings))
             return new_parameter_list
-        if isinstance(parameter, str) or isinstance(parameter, unicode):
+        if isinstance(parameter, str) or isinstance(parameter, unicode) or isinstance(parameter, int):
             # print "parameter is string %s" % parameter
             if Utils.is_containing_bracket(parameter):
                 return cls._get_global_variable(sentence=parameter, settings=settings)