2 new revisions:

Revision: e41f2582bd74
Author:   Pekka Klärck
Date:     Mon May 16 04:54:09 2011
Log:      cleanup
http://code.google.com/p/robotframework/source/detail?r=e41f2582bd74

Revision: 8e8f2303f31c
Author:   Pekka Klärck
Date:     Mon May 16 05:12:47 2011
Log:      Update issue 109...
http://code.google.com/p/robotframework/source/detail?r=8e8f2303f31c

==============================================================================
Revision: e41f2582bd74
Author:   Pekka Klärck
Date:     Mon May 16 04:54:09 2011
Log:      cleanup
http://code.google.com/p/robotframework/source/detail?r=e41f2582bd74

Modified:
 /src/robot/output/monitor.py

=======================================
--- /src/robot/output/monitor.py        Thu Mar 24 06:18:43 2011
+++ /src/robot/output/monitor.py        Mon May 16 04:54:09 2011
@@ -49,6 +49,14 @@
         self._write_message(test.message)
         self._write_separator('-')

+    def message(self, msg):
+        if self._is_logged(msg.level):
+ self._write_with_highlighting('[ ', msg.level, ' ] ' + msg.message,
+                                          stream=sys.__stderr__)
+    def output_file(self, name, path):
+        if not self._running_suites:  # ignore split output files
+            self._write('%-8s %s' % (name+':', path))
+
     def _write_info(self, name, doc, start_suite=False):
         maxwidth = self._width
         if not start_suite:
@@ -59,30 +67,19 @@
     def _get_info(self, name, doc, maxwidth):
         if utils.get_console_length(name) > maxwidth:
             return utils.pad_console_length(name, maxwidth, cut_left=True)
-        if doc == '':
-            return utils.pad_console_length(name, maxwidth)
-        info = '%s :: %s' % (name, doc.splitlines()[0])
+ info = name if not doc else '%s :: %s' % (name, doc.splitlines()[0])
         return utils.pad_console_length(info, maxwidth)

     def _write_status(self, status):
         self._write_with_highlighting(' | ', status, ' |')
-        self._write('')
+
+    def _write_message(self, message):
+        if message:
+            self._write(message.strip())

     def _write_separator(self, sep_char):
         self._write(sep_char * self._width)

-    def output_file(self, name, path):
-        # called by LOGGER
-        if not self._running_suites:  # ignore split output files
-            self._write('%s %s' % ((name+':').ljust(8), path))
-
-    def message(self, msg):
-        # called by LOGGER
-        if self._is_logged(msg.level):
-            self._write_with_highlighting('[ ' , msg.level, ' ] ',
-                                          stream=sys.__stderr__)
-            self._write(msg.message, stream=sys.__stderr__)
-
     def _write(self, message, newline=True, stream=sys.__stdout__):
         if newline:
             message += '\n'
@@ -90,16 +87,12 @@
         stream.flush()

     def _write_with_highlighting(self, before, highlighted, after,
-                                 stream=sys.__stdout__):
+                                 newline=True, stream=sys.__stdout__):
         self._write(before, newline=False, stream=stream)
         self._highlighter.start(highlighted, stream)
         self._write(highlighted, newline=False, stream=stream)
         self._highlighter.end()
-        self._write(after, newline=False, stream=stream)
-
-    def _write_message(self, message):
-        if message:
-            self._write(message.strip())
+        self._write(after, newline=newline, stream=stream)


 class StatusHighlighter:

==============================================================================
Revision: 8e8f2303f31c
Author:   Pekka Klärck
Date:     Mon May 16 05:12:47 2011
Log:      Update issue 109
Precision support for `Convert To Number`.
http://code.google.com/p/robotframework/source/detail?r=8e8f2303f31c

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 Sat May 7 03:13:27 2011 +++ /atest/robot/standard_libraries/builtin/converter.txt Mon May 16 05:12:47 2011
@@ -38,6 +38,9 @@
     [Tags]  jybot
     ${tc}=  Check Test Case  ${TEST NAME}
Verify argument type message ${tc.kws[0].kws[0].msgs[0]} java.lang.String
+
+Convert To Number With Precision
+    Check Test Case  ${TEST NAME}

 Convert To String
     ${tc}=  Check Test Case  ${TEST NAME}
=======================================
--- /atest/testdata/standard_libraries/builtin/converter.txt Sun May 8 15:08:06 2011 +++ /atest/testdata/standard_libraries/builtin/converter.txt Mon May 16 05:12:47 2011
@@ -78,6 +78,12 @@
     ${JAVA_DOUBLE}        1.1
     ${JAVA_STRING_INVALID}  This fails!

+Convert To Number With Precision
+ [Documentation] FAIL STARTS: 'invalid' cannot be converted to an integer: ValueError:
+    ${res} =  Convert to Number  1.01  precision=1
+    Should Be Equal  ${res}  ${1.0}
+    Convert to Number  1  invalid
+
 Convert To String
     ${int42} =  Convert To Integer  42
     Should Not Be Equal  ${int42}  42
=======================================
--- /src/robot/libraries/BuiltIn.py     Sat May  7 11:02:25 2011
+++ /src/robot/libraries/BuiltIn.py     Mon May 16 05:12:47 2011
@@ -53,6 +53,8 @@
| ${result} = | Convert To Integer | 100 | 2 | # Result is 4 | | ${result} = | Convert To Integer | 0b100 | | # Result is 4 | | ${result} = | Convert To Integer | 0x100 | | # Result is 256 |
+
+ If you need a floating point number, use `Convert To Number` instead.
         """
         self._log_types(item)
         return self._convert_to_integer(item, base)
@@ -86,12 +88,38 @@
             return item, base
         return item[2:], bases[item[:2]]

-    def convert_to_number(self, item):
-        """Converts the given item to a floating point number."""
+    def convert_to_number(self, item, precision=None):
+        """Converts the given item to a floating point number.
+
+ If the optional `precision` is positive or zero, the returned number + is rounded to that number of decimal digits. Negative precision means + that the number is rounded to the closest multiple of 10 to the power
+        of the absolute precision.
+
+        Examples:
+ | ${result} = | Convert To Number | 42.512 | | # Result is 42.512 | + | ${result} = | Convert To Number | 42.512 | 1 | # Result is 42.5 | + | ${result} = | Convert To Number | 42.512 | 0 | # Result is 43.0 | + | ${result} = | Convert To Number | 42.512 | -1 | # Result is 40.0 |
+
+        Notice that machines generally cannot store floating point numbers
+        accurately. This may cause surprises with these numbers in general
+ and also when they are rounded. For more information see, for example,
+        this floating point arithmetic tutorial:
+        http://docs.python.org/tutorial/floatingpoint.html
+
+        If you need an integer number, use `Convert To Integer` instead.
+        """
         self._log_types(item)
-        return self._convert_to_number(item)
-
-    def _convert_to_number(self, item):
+        return self._convert_to_number(item, precision)
+
+    def _convert_to_number(self, item, precision=None):
+        number = self._convert_to_number_without_precision(item)
+        if precision:
+            number = round(number, self._convert_to_integer(precision))
+        return number
+
+    def _convert_to_number_without_precision(self, item):
         try:
             if utils.is_jython:
                 item = self._handle_java_numbers(item)

Reply via email to