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."""