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()

Reply via email to