4 new revisions:

Revision: 4b1effec2640
Author:   Pekka Klärck
Date:     Thu May  5 13:47:00 2011
Log:      cleanup
http://code.google.com/p/robotframework/source/detail?r=4b1effec2640

Revision: ab8340b006c0
Author:   Pekka Klärck
Date:     Thu May  5 13:48:40 2011
Log: simplify handling java types in _convert_to_integer - jython 2.5 handl...
http://code.google.com/p/robotframework/source/detail?r=ab8340b006c0

Revision: e77528b3d064
Author:   Pekka Klärck
Date:     Thu May  5 13:58:17 2011
Log: Create the value of integer variables like ${42} with `int` not with `...
http://code.google.com/p/robotframework/source/detail?r=e77528b3d064

Revision: 2a553bd595d7
Author:   Pekka Klärck
Date:     Thu May  5 14:00:00 2011
Log: cleanup, mostly possible now when we don't need to support jython 2.2
http://code.google.com/p/robotframework/source/detail?r=2a553bd595d7

==============================================================================
Revision: 4b1effec2640
Author:   Pekka Klärck
Date:     Thu May  5 13:47:00 2011
Log:      cleanup
http://code.google.com/p/robotframework/source/detail?r=4b1effec2640

Modified:
 /atest/robot/standard_libraries/builtin/converter.txt

=======================================
--- /atest/robot/standard_libraries/builtin/converter.txt Wed Apr 20 05:19:54 2011 +++ /atest/robot/standard_libraries/builtin/converter.txt Thu May 5 13:47:00 2011
@@ -9,33 +9,33 @@

 *** Test Cases ***
 Convert To Integer
-    ${tc}=  Check testcase  Convert To Integer
+    ${tc}=  Check Test Case  ${TEST NAME}
     Verify argument type message  ${tc.kws[0].kws[0].msgs[0]}  unicode

 Convert To Integer With Java Objects
     [Tags]  jybot
-    ${tc}=  Check testcase  Convert To Integer With Java Objects
+    ${tc}=  Check Test Case  ${TEST NAME}
Verify argument type message ${tc.kws[0].kws[0].msgs[0]} java.lang.String

 Convert To Number
-    ${tc}=  Check testcase  Convert To Number
+    ${tc}=  Check Test Case  ${TEST NAME}
     Verify argument type message  ${tc.kws[0].kws[0].msgs[0]}  unicode

 Convert To Number With Java Objects
     [Tags]  jybot
-    ${tc}=  Check testcase  Convert To Number With Java Objects
+    ${tc}=  Check Test Case  ${TEST NAME}
Verify argument type message ${tc.kws[0].kws[0].msgs[0]} java.lang.String

 Convert To String
-    ${tc}=  Check testcase  Convert To String
+    ${tc}=  Check Test Case  ${TEST NAME}
     Verify argument type message  ${tc.kws[0].msgs[0]}  unicode

 Convert To Boolean
-    ${tc}=  Check testcase  Convert To Boolean
+    ${tc}=  Check Test Case  ${TEST NAME}
     Verify argument type message  ${tc.kws[0].msgs[0]}  unicode

 Create List
-    Check testcase  Create List
+    Check Test Case  ${TEST NAME}

 *** Keywords ***


==============================================================================
Revision: ab8340b006c0
Author:   Pekka Klärck
Date:     Thu May  5 13:48:40 2011
Log: simplify handling java types in _convert_to_integer - jython 2.5 handles overflow automatically
http://code.google.com/p/robotframework/source/detail?r=ab8340b006c0

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

=======================================
--- /atest/testdata/standard_libraries/builtin/converter.txt Mon Mar 29 04:29:59 2010 +++ /atest/testdata/standard_libraries/builtin/converter.txt Thu May 5 13:48:40 2011
@@ -12,7 +12,7 @@
     Convert To Integer  ${OBJECT_FAILING}

 Convert To Integer With Java Objects
- [Documentation] FAIL STARTS: 'foobar' cannot be converted to an integer: NumberFormatException: + [Documentation] FAIL STARTS: 'foobar' cannot be converted to an integer: ValueError:
     Test Convert To Integer  ${JAVA_STRING_INT}
     Test Convert To Integer  ${JAVA_INTEGER}
     Test Convert To Integer  ${JAVA_LONG}
=======================================
--- /src/robot/libraries/BuiltIn.py     Wed Apr 20 04:57:20 2011
+++ /src/robot/libraries/BuiltIn.py     Thu May  5 13:48:40 2011
@@ -39,25 +39,18 @@
     def _convert_to_integer(self, item):
         try:
             if utils.is_jython:
-                return self._jython_to_integer(item)
+                item = self._handle_java_types(item)
             return int(item)
         except:
             raise RuntimeError("'%s' cannot be converted to an integer: %s"
-                            % (item, utils.get_error_message()))
-
-    def _jython_to_integer(self, item):
-        # This helper handles Java Strings and Numbers as well as Jython
-        # not handling overflow automatically
-        try:
-            return int(item)
-        except ValueError:
-            return long(item)
-        except TypeError:
-            if isinstance(item, String):
-                return Long.parseLong(item)
-            if isinstance(item, Number):
-                return item.longValue()
-            raise
+                               % (item, utils.get_error_message()))
+
+    def _handle_java_types(self, item):
+        if isinstance(item, String):
+            return utils.unic(item)
+        if isinstance(item, Number):
+            return item.longValue()
+        return item

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

==============================================================================
Revision: e77528b3d064
Author:   Pekka Klärck
Date:     Thu May  5 13:58:17 2011
Log: Create the value of integer variables like ${42} with `int` not with `long`.

Update issue 834
Status: Done
http://code.google.com/p/robotframework/source/detail?r=e77528b3d064

Modified:
 /src/robot/variables/variables.py

=======================================
--- /src/robot/variables/variables.py   Wed May  4 04:39:15 2011
+++ /src/robot/variables/variables.py   Thu May  5 13:58:17 2011
@@ -110,7 +110,7 @@
             raise ValueError
         base = self._normalize(name)[2:-1]
         try:
-            return long(base)
+            return int(base)
         except ValueError:
             return float(base)


==============================================================================
Revision: 2a553bd595d7
Author:   Pekka Klärck
Date:     Thu May  5 14:00:00 2011
Log: cleanup, mostly possible now when we don't need to support jython 2.2
http://code.google.com/p/robotframework/source/detail?r=2a553bd595d7

Modified:
 /src/robot/running/javaargcoercer.py

=======================================
--- /src/robot/running/javaargcoercer.py        Sun Feb  6 01:24:10 2011
+++ /src/robot/running/javaargcoercer.py        Thu May  5 14:00:00 2011
@@ -12,9 +12,7 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.

-
 import sys
-
 from java.lang import Byte, Short, Integer, Long, Boolean, Float, Double

 from robot.errors import DataError
@@ -24,35 +22,31 @@

     def __init__(self, signatures):
         types = self._parse_types(signatures)
-        self._coercers = [ _CoercionFunction(t, i+1) for i, t in types ]
+        self._coercers = [_CoercionFunction(t, i+1) for i, t in types]

     def _parse_types(self, signatures):
         types = {}
         for sig in signatures:
             for index, arg in enumerate(sig.args):
                 types.setdefault(index, []).append(arg)
-        types = types.items()
-        types.sort()
-        return types
+        return sorted(types.items())

     def __call__(self, args):
- return [ coercer(arg) for coercer, arg in zip(self._coercers, args) ]
+        return [coercer(arg) for coercer, arg in zip(self._coercers, args)]


 class _CoercionFunction:
-
     _bool_types = [Boolean]
     _int_types = [Byte, Short, Integer, Long]
     _float_types = [Float, Double]
     _bool_primitives = ['boolean']
     _int_primitives = ['byte', 'short', 'int', 'long']
     _float_primitives = ['float', 'double']
-    if sys.version_info[:2] > (2,2):
-        pattern = "<type '%s'>"
-        _bool_primitives =  [ pattern % 'boolean' ]
-        _int_primitives =   [ pattern % p for p in _int_primitives ]
-        _float_primitives = [ pattern % p for p in _float_primitives ]
-        del pattern
+    pattern = "<type '%s'>"
+    _bool_primitives =  [pattern % 'boolean']
+    _int_primitives =   [pattern % p for p in _int_primitives]
+    _float_primitives = [pattern % p for p in _float_primitives]
+    del pattern

     def __init__(self, arg_types, position):
         self._position = position
@@ -90,15 +84,14 @@
         return False

     def _to_bool(self, arg):
-        if arg.lower() == 'false':
-            return False
-        if arg.lower() == 'true':
-            return True
-        self._coercion_failed('boolean')
+        try:
+            return {'false': False, 'true': True}[arg.lower()]
+        except KeyError:
+            self._coercion_failed('boolean')

     def _to_int(self, arg):
         try:
-            return long(arg)
+            return int(arg)
         except ValueError:
             self._coercion_failed('integer')

@@ -114,4 +107,3 @@
     def _coercion_failed(self, arg_type):
         raise DataError('Argument at position %d cannot be coerced to %s'
                         % (self._position, arg_type))
-

Reply via email to