Revision: 0020b6c1dc55
Author:   Pekka Klärck
Date:     Sat May  7 11:02:25 2011
Log:      hopefully last fine tunings and test fixes to Convert to Integer
http://code.google.com/p/robotframework/source/detail?r=0020b6c1dc55

Modified:
 /atest/testdata/standard_libraries/builtin/converter.txt
 /src/robot/libraries/BuiltIn.py

=======================================
--- /atest/testdata/standard_libraries/builtin/converter.txt Sat May 7 06:50:11 2011 +++ /atest/testdata/standard_libraries/builtin/converter.txt Sat May 7 11:02:25 2011
@@ -26,31 +26,31 @@
 Convert To Integer With Base
[Documentation] FAIL STARTS: 'B' cannot be converted to an integer: ValueError:
     [Template]  Test Convert To Integer
-    10  10  10
-    A   10  16
-    10  8   ${8}
-    10  2   2
-    B   -   2
+    10         10     10
+    A          10     16
+    10         8      ${8}
+    10         2      2
     FF 00      65280  16
     1010 1010  170    2
+    B          this fails

 Convert To Integer With Invalid Base
[Documentation] FAIL STARTS: '1' cannot be converted to an integer: 'invalid' cannot be converted to an integer: ValueError:
     Convert To Integer  1  invalid

 Convert To Integer With Embedded Base
- [Documentation] FAIL STARTS: 'XXX' cannot be converted to an integer: ValueError: + [Documentation] FAIL STARTS: '0xXXX' cannot be converted to an integer: ValueError:
     [Template]  Test Convert To Integer
-    0xf00  3840
-    0XF00  3840
-    0b10   2
-    0B10   2
-    0B10   2832  base=16  # Explicit base wins
-    0o101  65
-    0O102  66
-    0xXXX  -
+    0xf00         3840
+    0XF00         3840
+    0b10          2
+    0B10          2
+    0B10          2832  base=16  # Explicit base wins
+    0o101         65
+    0O102         66
     0x FF 00      65280
     0b 1010 1010  170
+    0xXXX         this fails

 Convert To Integer With Base And Java Objects
[Documentation] FAIL STARTS: 'F00' cannot be converted to an integer: ValueError:
=======================================
--- /src/robot/libraries/BuiltIn.py     Sat May  7 06:50:11 2011
+++ /src/robot/libraries/BuiltIn.py     Sat May  7 11:02:25 2011
@@ -57,33 +57,34 @@
         self._log_types(item)
         return self._convert_to_integer(item, base)

-    def _convert_to_integer(self, item, base=None):
+    def _convert_to_integer(self, orig, base=None):
         try:
-            if utils.is_jython:
-                item = self._handle_java_numbers(item)
-            item, base = self._normalize_and_get_base(item, base)
+            item = self._handle_java_numbers(orig)
+            item, base = self._get_base(item, base)
             if base:
                 return int(item, self._convert_to_integer(base))
             return int(item)
         except:
             raise RuntimeError("'%s' cannot be converted to an integer: %s"
-                               % (item, utils.get_error_message()))
+                               % (orig, utils.get_error_message()))

     def _handle_java_numbers(self, item):
+        if not utils.is_jython:
+            return item
         if isinstance(item, String):
             return utils.unic(item)
         if isinstance(item, Number):
             return item.doubleValue()
         return item

-    def _normalize_and_get_base(self, item, base):
+    def _get_base(self, item, base):
         if not isinstance(item, basestring):
             return item, base
-        item = item.replace(' ', '')
+        item = utils.normalize(item)
         bases = {'0b': 2, '0o': 8, '0x': 16}
-        if base or not item.lower().startswith(tuple(bases)):
+        if base or not item.startswith(tuple(bases)):
             return item, base
-        return item[2:], bases[item.lower()[:2]]
+        return item[2:], bases[item[:2]]

     def convert_to_number(self, item):
         """Converts the given item to a floating point number."""

Reply via email to