瀏覽代碼

fix integer in global variables #239

nico 8 年之前
父節點
當前提交
662613498a
共有 2 個文件被更改,包括 27 次插入5 次删除
  1. 21 2
      Tests/test_brain_loader.py
  2. 6 3
      kalliope/core/ConfigurationManager/BrainLoader.py

+ 21 - 2
Tests/test_brain_loader.py

@@ -1,3 +1,4 @@
+# coding: utf8
 import os
 import unittest
 
@@ -289,6 +290,8 @@ class TestBrainLoader(unittest.TestCase):
         variables = {
             "name": "LaMonf",
             "name2": "kalliope",
+            "name3": u"kalliopé",
+            "name4": 1
         }
         st = Settings(variables=variables)
 
@@ -296,8 +299,24 @@ class TestBrainLoader(unittest.TestCase):
 
         self.assertEquals(BrainLoader._get_global_variable(sentence=sentence,
                                                            settings=st),
-                          expected_result,
-                          "Fail to get the global variable from the sentence")
+                          expected_result)
+
+        # test with accent
+        sentence = "i am {{name3}}"
+        expected_result = u"i am kalliopé"
+
+        self.assertEquals(BrainLoader._get_global_variable(sentence=sentence,
+                                                           settings=st),
+                          expected_result)
+
+        # test with int
+        sentence = "i am {{name4}}"
+        expected_result = "i am 1"
+
+        self.assertEquals(BrainLoader._get_global_variable(sentence=sentence,
+                                                           settings=st),
+                          expected_result)
+
 
 if __name__ == '__main__':
     unittest.main()

+ 6 - 3
kalliope/core/ConfigurationManager/BrainLoader.py

@@ -287,8 +287,11 @@ class BrainLoader(object):
             if param_no_brackets in settings.variables:
                 logger.debug("Replacing variable %s with  %s" % (param_with_bracket,
                                                                  settings.variables[param_no_brackets]))
-                # need to encode utf-8 to handle special characters
-                unicode_str = settings.variables[param_no_brackets].encode('utf-8')
+
+                # need to check if the variable is an integer
+                variable = settings.variables[param_no_brackets]
+                if isinstance(variable, int):
+                    variable = str(variable)
                 sentence_no_spaces = sentence_no_spaces.replace(param_with_bracket,
-                                                                unicode_str)
+                                                                variable)
         return sentence_no_spaces