2 new revisions:
Revision: 66e778da373b
Author: Pekka Klärck
Date: Fri May 20 01:02:18 2011
Log: Implementation and tests for Convert To Binary/Octal/Hexa...
http://code.google.com/p/robotframework/source/detail?r=66e778da373b
Revision: d4aa6547c5c9
Author: Pekka Klärck
Date: Fri May 20 01:03:31 2011
Log: Automated merge with https://robotframework.googlecode.com/hg/
http://code.google.com/p/robotframework/source/detail?r=d4aa6547c5c9
==============================================================================
Revision: 66e778da373b
Author: Pekka Klärck
Date: Fri May 20 01:02:18 2011
Log: Implementation and tests for Convert To Binary/Octal/Hexa
Update issue 836
Owner: pekka.klarck
Cc: janne.t.harkonen
Status: Started
Otherwise done but code review and kw docs missing.
http://code.google.com/p/robotframework/source/detail?r=66e778da373b
Modified:
/atest/robot/standard_libraries/builtin/converter.txt
/atest/testdata/standard_libraries/builtin/converter.txt
/src/robot/libraries/BuiltIn.py
=======================================
--- /atest/robot/standard_libraries/builtin/converter.txt Mon May 16
05:12:47 2011
+++ /atest/robot/standard_libraries/builtin/converter.txt Fri May 20
01:02:18 2011
@@ -29,6 +29,18 @@
Convert To Integer With Base And Java Objects
[Tags] jybot
Check Test Case ${TEST NAME}
+
+Convert To Binary
+ ${tc}= Check Test Case ${TEST NAME}
+ Verify argument type message ${tc.kws[0].kws[0].msgs[0]} unicode
+
+Convert To Octal
+ ${tc}= Check Test Case ${TEST NAME}
+ Verify argument type message ${tc.kws[0].kws[0].msgs[0]} unicode
+
+Convert To Hexa
+ ${tc}= Check Test Case ${TEST NAME}
+ Verify argument type message ${tc.kws[0].kws[0].msgs[0]} unicode
Convert To Number
${tc}= Check Test Case ${TEST NAME}
=======================================
--- /atest/testdata/standard_libraries/builtin/converter.txt Mon May 16
05:12:47 2011
+++ /atest/testdata/standard_libraries/builtin/converter.txt Fri May 20
01:02:18 2011
@@ -59,6 +59,33 @@
${JAVA_STRING_EMBEDDED_BASE} 3840
${JAVA_STRING_HEX} fails 8
+Convert To Binary
+ [Template] Test Convert To Binary
+ 0 0
+ 1 ${1}
+ 0b10 2 prefix=0b
+ 00001000 10 base=8 length=8
+ 11111111 0xFF
+ 100000000 100 base=16 length=2
+ B0101 101 base=2 prefix=B length=4
+
+Convert To Octal
+ [Template] Test Convert To Octal
+ 0 0
+ 1 ${1}
+ 0o10 8 prefix=0o
+ 00001000 200 base=16 length=8
+ 52746757 0xABCDEF length=5
+ xXx007 111 base=2 prefix=xXx length=3
+
+Convert To Hexa
+ [Template] Test Convert To Hexa
+ 0 0
+ 1 ${1}
+ 0xA 10 prefix=0x length=0
+ 0000abcd ABCD base=16 length=8 lowercase=yes
+ 0A0a 10 base=10 prefix=0A length=2 lowercase=please
+
Convert To Number
[Documentation] FAIL REGEXP: ^'MyObject' cannot be converted to a
floating point number: (Attribute|Type)Error: .*$
[Template] Test Convert To Number
@@ -124,6 +151,24 @@
${act} = Convert To Integer ${item} ${base}
${exp} = Evaluate ${exp}
Should Be Equal ${act} ${exp}
+
+Test Convert To Binary
+ [Arguments] ${exp} ${item} ${base}= ${prefix}= ${length}=
+ ${act} = Convert To Binary ${item} base=${base}
+ ... prefix=${prefix} length=${length}
+ Should Be Equal ${act} ${exp}
+
+Test Convert To Octal
+ [Arguments] ${exp} ${item} ${base}= ${prefix}= ${length}=
+ ${act} = Convert To Octal ${item} base=${base}
+ ... prefix=${prefix} length=${length}
+ Should Be Equal ${act} ${exp}
+
+Test Convert To Hexa
+ [Arguments] ${exp} ${item} ${base}= ${prefix}= ${length}=
${lowercase}=
+ ${act} = Convert To Hexa ${item} base=${base}
+ ... prefix=${prefix} length=${length} lowercase=${lowercase}
+ Should Be Equal ${act} ${exp}
Test Convert To Number
[Arguments] ${item} ${exp}=1.0
=======================================
--- /src/robot/libraries/BuiltIn.py Wed May 18 06:46:45 2011
+++ /src/robot/libraries/BuiltIn.py Fri May 20 01:02:18 2011
@@ -28,6 +28,17 @@
if utils.is_jython:
from java.lang import String, Number
+try:
+ bin # available since Python 2.6
+except NameError:
+ def bin(integer):
+ bins = []
+ while integer > 1:
+ integer, remainder = divmod(integer, 2)
+ bins.append(str(remainder))
+ bins.append(str(integer))
+ return '0b' + ''.join(reversed(bins))
+
class _Converter:
@@ -88,6 +99,30 @@
return item, base
return item[2:], bases[item[:2]]
+ def convert_to_binary(self, item, base=None, prefix=None, length=None):
+ return self._convert_to_bin_oct_hex(bin, item, base, prefix,
length)
+
+ def convert_to_octal(self, item, base=None, prefix=None, length=None):
+ return self._convert_to_bin_oct_hex(oct, item, base, prefix,
length)
+
+ def convert_to_hexa(self, item, base=None, prefix=None, length=None,
+ lowercase=False):
+ return self._convert_to_bin_oct_hex(hex, item, base, prefix,
length,
+ lowercase)
+
+ def _convert_to_bin_oct_hex(self, method, item, base, prefix, length,
+ lowercase=False):
+ self._log_types(item)
+ ret = method(self._convert_to_integer(item, base)).upper()
+ if len(ret) > 1: # oct(0) -> '0' (i.e. has no prefix)
+ prefix_length = {bin: 2, oct: 1, hex: 2}[method]
+ ret = ret[prefix_length:]
+ if length:
+ ret = ret.rjust(self._convert_to_integer(length), '0')
+ if lowercase:
+ ret = ret.lower()
+ return (prefix or '') + ret
+
def convert_to_number(self, item, precision=None):
"""Converts the given item to a floating point number.
==============================================================================
Revision: d4aa6547c5c9
Author: Pekka Klärck
Date: Fri May 20 01:03:31 2011
Log: Automated merge with https://robotframework.googlecode.com/hg/
http://code.google.com/p/robotframework/source/detail?r=d4aa6547c5c9