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)