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


Reply via email to