diff options
author | Olivier Tilloy <olivier@tilloy.net> | 2009-03-09 19:39:54 +0100 |
---|---|---|
committer | Olivier Tilloy <olivier@tilloy.net> | 2009-03-09 19:39:54 +0100 |
commit | ab8fda2c128eeaa45f71d2e27da7e627c439d251 (patch) | |
tree | 7727293be16f8b844e6ce8dac9d381f101042a7c | |
parent | 3c23acdb070d2c3230f3ecf497b4fbd760f5a10e (diff) | |
download | pyexiv2-ab8fda2c128eeaa45f71d2e27da7e627c439d251.tar.gz |
EXIF Undefined to string conversion.
-rw-r--r-- | src/pyexiv2.py | 11 | ||||
-rw-r--r-- | unittest/exif.py | 8 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/pyexiv2.py b/src/pyexiv2.py index 9102011..fbb638c 100644 --- a/src/pyexiv2.py +++ b/src/pyexiv2.py @@ -567,8 +567,15 @@ class ExifTag(MetadataTag): raise ExifValueError(value, xtype) elif xtype == 'Undefined': - # TODO - raise NotImplementedError('EXIF conversion for type [%s]' % xtype) + if type(value) is unicode: + try: + return value.encode('utf-8') + except UnicodeEncodeError: + raise ExifValueError(value, xtype) + elif type(value) is str: + return value + else: + raise ExifValueError(value, xtype) # TODO: other types diff --git a/unittest/exif.py b/unittest/exif.py index 0f7df8f..419b2dd 100644 --- a/unittest/exif.py +++ b/unittest/exif.py @@ -174,3 +174,11 @@ class TestExifTag(unittest.TestCase): u'Digital still camera') # Invalid values self.failUnlessRaises(ExifValueError, ExifTag._convert_to_python, 'abc', xtype, None) + + def test_convert_to_string_undefined(self): + xtype = 'Undefined' + # Valid values + self.assertEqual(ExifTag._convert_to_string('48 49 48 48 ', xtype), '48 49 48 48 ') + self.assertEqual(ExifTag._convert_to_string(u'48 49 48 48 ', xtype), '48 49 48 48 ') + # Invalid values + self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, 3, xtype) |