Revision: 2551
Author: janne.t.harkonen
Date: Fri Feb 26 02:15:16 2010
Log: Cleanup and more tests for unic()
http://code.google.com/p/robotframework/source/detail?r=2551
Modified:
/trunk/src/robot/utils/unic.py
/trunk/utest/utils/test_unic.py
=======================================
--- /trunk/src/robot/utils/unic.py Thu Feb 25 06:05:54 2010
+++ /trunk/src/robot/utils/unic.py Fri Feb 26 02:15:16 2010
@@ -12,34 +12,35 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-
import os
import sys
-if os.name == 'java':
+def unic(item):
+ # Based on a recipe from http://code.activestate.com/recipes/466341
+ try:
+ return unicode(item)
+ except UnicodeDecodeError:
+ ascii_text = str(item).encode('string_escape')
+ return unicode(ascii_text)
+
+
+if os.name == 'java' and sys.version_info[:2] > (2,2):
from java.lang import Object, Class
+ _unic = unic
def unic(item):
if isinstance(item, basestring):
return item
- if sys.version_info[:2] > (2,2):
- if hasattr(item, '__iter__'):
- item = [ _to_string(i) for i in item ]
- elif not isinstance(item, Class):
#http://bugs.jython.org/issue1564
- item = _to_string(item) # http://bugs.jython.org/issue1563
- return unicode(item)
-
- def _to_string(item):
- return isinstance(item, Object) and item.toString() or item
-
-else:
+ if isinstance(item, Object) and not isinstance(item, Class): #
http://bugs.jython.org/issue1564
+ item = item.toString() # http://bugs.jython.org/issue1563
+ return _unic(item)
+
+
+elif os.name == 'java':
def unic(item):
- # Based on a recipe from http://code.activestate.com/recipes/466341
- try:
- return unicode(item)
- except UnicodeDecodeError:
- ascii_text = str(item).encode('string_escape')
- return unicode(ascii_text)
+ if isinstance(item, basestring):
+ return item
+ return unicode(item)
=======================================
--- /trunk/utest/utils/test_unic.py Thu Feb 25 06:05:54 2010
+++ /trunk/utest/utils/test_unic.py Fri Feb 26 02:15:16 2010
@@ -15,12 +15,17 @@
assert_equals(unic(JavaObject(data)), data)
def test_with_class_type(self):
-
assert_equals(unic(String('').getClass()), "<type 'java.lang.String'>")
+ assert_true('java.lang.String' in unic(String('').getClass()))
def test_with_array_containing_unicode_objects(self):
assert_true('Circle is 360' in
unic(UnicodeJavaLibrary().javaObjectArray()))
+ def test_with_iterator(self):
+ iterator = UnicodeJavaLibrary().javaIterator()
+ assert_true('java.util' in unic(iterator))
+ assert_true('Circle is 360' in iterator.next())
+
if __name__ == '__main__':
unittest.main()