~osomon/pyexiv2/pyexiv2-0.3

« back to all changes in this revision

Viewing changes to test/xmp.py

  • Committer: Olivier Tilloy
  • Date: 2011-08-03 06:57:19 UTC
  • mfrom: (358.1.3 timezones)
  • Revision ID: olivier@tilloy.net-20110803065719-cjwhptodhu0e3i6y
Fix timezone formatting when writing IPTC and XMP tags.
This introduces an optional dependency on python-tz in unit tests.

Original patch by Petri Damstén, thanks Petri!

Show diffs side-by-side

added added

removed removed

Lines of Context:
34
34
import datetime
35
35
from testutils import EMPTY_JPG_DATA
36
36
 
 
37
# Optional dependency on python-tz, more tests can be run if it is installed
 
38
try:
 
39
    import pytz
 
40
except ImportError:
 
41
    pytz = None
 
42
 
37
43
 
38
44
class TestXmpTag(unittest.TestCase):
39
45
 
130
136
                         '2009-02-04')
131
137
        self.assertEqual(tag._convert_to_string(datetime.datetime(1999, 10, 13), 'Date'),
132
138
                         '1999-10-13')
 
139
        self.assertEqual(tag._convert_to_string(datetime.datetime(1999, 10, 13, 5, 3), 'Date'),
 
140
                         '1999-10-13T05:03Z')
133
141
        self.assertEqual(tag._convert_to_string(datetime.datetime(1999, 10, 13, 5, 3, tzinfo=FixedOffset()), 'Date'),
134
142
                         '1999-10-13T05:03Z')
135
143
        self.assertEqual(tag._convert_to_string(datetime.datetime(1999, 10, 13, 5, 3, tzinfo=FixedOffset('+', 5, 30)), 'Date'),
136
144
                         '1999-10-13T05:03+05:30')
137
145
        self.assertEqual(tag._convert_to_string(datetime.datetime(1999, 10, 13, 5, 3, tzinfo=FixedOffset('-', 11, 30)), 'Date'),
138
146
                         '1999-10-13T05:03-11:30')
 
147
        self.assertEqual(tag._convert_to_string(datetime.datetime(1999, 10, 13, 5, 3, 27), 'Date'),
 
148
                         '1999-10-13T05:03:27Z')
139
149
        self.assertEqual(tag._convert_to_string(datetime.datetime(1999, 10, 13, 5, 3, 27, tzinfo=FixedOffset()), 'Date'),
140
150
                         '1999-10-13T05:03:27Z')
141
151
        self.assertEqual(tag._convert_to_string(datetime.datetime(1999, 10, 13, 5, 3, 27, tzinfo=FixedOffset('+', 5, 30)), 'Date'),
142
152
                         '1999-10-13T05:03:27+05:30')
143
153
        self.assertEqual(tag._convert_to_string(datetime.datetime(1999, 10, 13, 5, 3, 27, tzinfo=FixedOffset('-', 11, 30)), 'Date'),
144
154
                         '1999-10-13T05:03:27-11:30')
 
155
        self.assertEqual(tag._convert_to_string(datetime.datetime(1999, 10, 13, 5, 3, 27, 124300), 'Date'),
 
156
                         '1999-10-13T05:03:27.1243Z')
145
157
        self.assertEqual(tag._convert_to_string(datetime.datetime(1999, 10, 13, 5, 3, 27, 124300, tzinfo=FixedOffset()), 'Date'),
146
158
                         '1999-10-13T05:03:27.1243Z')
147
159
        self.assertEqual(tag._convert_to_string(datetime.datetime(1999, 10, 13, 5, 3, 27, 124300, tzinfo=FixedOffset('+', 5, 30)), 'Date'),
152
164
        self.failUnlessRaises(XmpValueError, tag._convert_to_string, 'invalid', 'Date')
153
165
        self.failUnlessRaises(XmpValueError, tag._convert_to_string, None, 'Date')
154
166
 
 
167
    @unittest.skipIf(pytz is None, 'install python-tz to run this test')
 
168
    def test_convert_to_string_date_with_real_timezones(self):
 
169
        tag = XmpTag('Xmp.xmp.CreateDate')
 
170
        self.assertEqual(tag.type, 'Date')
 
171
        t = pytz.timezone('UTC').localize(datetime.datetime(2011, 2, 2, 10, 52, 4))
 
172
        self.assertEqual(tag._convert_to_string(t, 'Date'), '2011-02-02T10:52:04Z')
 
173
        t = pytz.timezone('CET').localize(datetime.datetime(2011, 2, 2, 10, 52, 4))
 
174
        self.assertEqual(tag._convert_to_string(t, 'Date'), '2011-02-02T10:52:04+01:00')
 
175
 
155
176
    def test_convert_to_python_integer(self):
156
177
        # Valid values
157
178
        tag = XmpTag('Xmp.xmpMM.SaveID')