1
# -*- coding: utf-8 -*-
3
# ******************************************************************************
5
# Copyright (C) 2011 Olivier Tilloy <olivier@tilloy.net>
7
# This file is part of the pyexiv2 distribution.
9
# pyexiv2 is free software; you can redistribute it and/or
10
# modify it under the terms of the GNU General Public License
11
# as published by the Free Software Foundation; either version 2
12
# of the License, or (at your option) any later version.
14
# pyexiv2 is distributed in the hope that it will be useful,
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
# GNU General Public License for more details.
19
# You should have received a copy of the GNU General Public License
20
# along with pyexiv2; if not, write to the Free Software
21
# Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
23
# Author: Olivier Tilloy <olivier@tilloy.net>
25
# ******************************************************************************
29
from pyexiv2.utils import DateTimeFormatter, FixedOffset
34
class TestDateTimeFormatter(unittest.TestCase):
36
def test_timedelta_to_offset(self):
38
t = datetime.timedelta(hours=5)
39
self.assertEqual(DateTimeFormatter.timedelta_to_offset(t), '+05:00')
40
t = datetime.timedelta(minutes=300)
41
self.assertEqual(DateTimeFormatter.timedelta_to_offset(t), '+05:00')
42
t = datetime.timedelta(hours=5, minutes=12)
43
self.assertEqual(DateTimeFormatter.timedelta_to_offset(t), '+05:12')
44
t = datetime.timedelta(seconds=10800)
45
self.assertEqual(DateTimeFormatter.timedelta_to_offset(t), '+03:00')
48
t = datetime.timedelta(hours=-4)
49
self.assertEqual(DateTimeFormatter.timedelta_to_offset(t), '-04:00')
50
t = datetime.timedelta(minutes=-258)
51
self.assertEqual(DateTimeFormatter.timedelta_to_offset(t), '-04:18')
52
t = datetime.timedelta(hours=-2, minutes=-12)
53
self.assertEqual(DateTimeFormatter.timedelta_to_offset(t), '-02:12')
54
t = datetime.timedelta(seconds=-10000)
55
self.assertEqual(DateTimeFormatter.timedelta_to_offset(t), '-02:46')
59
d = datetime.datetime(1899, 12, 31)
60
self.assertEqual(DateTimeFormatter.exif(d), '1899:12:31 00:00:00')
61
d = datetime.datetime(1899, 12, 31, 23)
62
self.assertEqual(DateTimeFormatter.exif(d), '1899:12:31 23:00:00')
63
d = datetime.datetime(1899, 12, 31, 23, 59)
64
self.assertEqual(DateTimeFormatter.exif(d), '1899:12:31 23:59:00')
65
d = datetime.datetime(1899, 12, 31, 23, 59, 59)
66
self.assertEqual(DateTimeFormatter.exif(d), '1899:12:31 23:59:59')
67
d = datetime.datetime(1899, 12, 31, 23, 59, 59, 999999)
68
self.assertEqual(DateTimeFormatter.exif(d), '1899:12:31 23:59:59')
69
d = datetime.datetime(1899, 12, 31, 23, 59, 59, tzinfo=FixedOffset())
70
self.assertEqual(DateTimeFormatter.exif(d), '1899:12:31 23:59:59')
71
d = datetime.datetime(1899, 12, 31, 23, 59, 59, tzinfo=FixedOffset(hours=5))
72
self.assertEqual(DateTimeFormatter.exif(d), '1899:12:31 23:59:59')
73
d = datetime.datetime(2011, 8, 8, 19, 3, 37)
74
self.assertEqual(DateTimeFormatter.exif(d), '2011:08:08 19:03:37')
77
d = datetime.date(1899, 12, 31)
78
self.assertEqual(DateTimeFormatter.exif(d), '1899:12:31')
79
d = datetime.date(2011, 8, 8)
80
self.assertEqual(DateTimeFormatter.exif(d), '2011:08:08')
83
self.assertRaises(TypeError, DateTimeFormatter.exif, None)
84
self.assertRaises(TypeError, DateTimeFormatter.exif, 3.14)
86
def test_iptc_date(self):
88
d = datetime.datetime(1899, 12, 31)
89
self.assertEqual(DateTimeFormatter.iptc_date(d), '1899-12-31')
90
d = datetime.datetime(1899, 12, 31, 23)
91
self.assertEqual(DateTimeFormatter.iptc_date(d), '1899-12-31')
92
d = datetime.datetime(1899, 12, 31, 23, 59)
93
self.assertEqual(DateTimeFormatter.iptc_date(d), '1899-12-31')
94
d = datetime.datetime(1899, 12, 31, 23, 59, 59)
95
self.assertEqual(DateTimeFormatter.iptc_date(d), '1899-12-31')
96
d = datetime.datetime(1899, 12, 31, 23, 59, 59, 999999)
97
self.assertEqual(DateTimeFormatter.iptc_date(d), '1899-12-31')
98
d = datetime.datetime(1899, 12, 31, 23, 59, 59, tzinfo=FixedOffset())
99
self.assertEqual(DateTimeFormatter.iptc_date(d), '1899-12-31')
100
d = datetime.datetime(1899, 12, 31, 23, 59, 59, tzinfo=FixedOffset(hours=5))
101
self.assertEqual(DateTimeFormatter.iptc_date(d), '1899-12-31')
102
d = datetime.datetime(2011, 8, 8, 19, 3, 37)
103
self.assertEqual(DateTimeFormatter.iptc_date(d), '2011-08-08')
106
d = datetime.date(1899, 12, 31)
107
self.assertEqual(DateTimeFormatter.iptc_date(d), '1899-12-31')
108
d = datetime.date(2011, 8, 8)
109
self.assertEqual(DateTimeFormatter.iptc_date(d), '2011-08-08')
112
self.assertRaises(TypeError, DateTimeFormatter.iptc_date, None)
113
self.assertRaises(TypeError, DateTimeFormatter.iptc_date, 3.14)
115
def test_iptc_time(self):
117
d = datetime.datetime(1899, 12, 31)
118
self.assertEqual(DateTimeFormatter.iptc_time(d), '00:00:00+00:00')
119
d = datetime.datetime(1899, 12, 31, 23)
120
self.assertEqual(DateTimeFormatter.iptc_time(d), '23:00:00+00:00')
121
d = datetime.datetime(1899, 12, 31, 23, 59)
122
self.assertEqual(DateTimeFormatter.iptc_time(d), '23:59:00+00:00')
123
d = datetime.datetime(1899, 12, 31, 23, 59, 59)
124
self.assertEqual(DateTimeFormatter.iptc_time(d), '23:59:59+00:00')
125
d = datetime.datetime(1899, 12, 31, 23, 59, 59, 999999)
126
self.assertEqual(DateTimeFormatter.iptc_time(d), '23:59:59+00:00')
127
d = datetime.datetime(1899, 12, 31, 23, 59, 59, tzinfo=FixedOffset())
128
self.assertEqual(DateTimeFormatter.iptc_time(d), '23:59:59+00:00')
129
d = datetime.datetime(1899, 12, 31, 23, 59, 59, tzinfo=FixedOffset(hours=5))
130
self.assertEqual(DateTimeFormatter.iptc_time(d), '23:59:59+05:00')
131
d = datetime.datetime(2011, 8, 8, 19, 3, 37)
132
self.assertEqual(DateTimeFormatter.iptc_time(d), '19:03:37+00:00')
135
d = datetime.time(23)
136
self.assertEqual(DateTimeFormatter.iptc_time(d), '23:00:00+00:00')
137
d = datetime.time(23, 59)
138
self.assertEqual(DateTimeFormatter.iptc_time(d), '23:59:00+00:00')
139
d = datetime.time(23, 59, 59)
140
self.assertEqual(DateTimeFormatter.iptc_time(d), '23:59:59+00:00')
141
d = datetime.time(23, 59, 59, 999999)
142
self.assertEqual(DateTimeFormatter.iptc_time(d), '23:59:59+00:00')
143
d = datetime.time(23, 59, 59, tzinfo=FixedOffset())
144
self.assertEqual(DateTimeFormatter.iptc_time(d), '23:59:59+00:00')
145
d = datetime.time(23, 59, 59, tzinfo=FixedOffset(hours=5))
146
self.assertEqual(DateTimeFormatter.iptc_time(d), '23:59:59+05:00')
147
d = datetime.time(19, 3, 37)
148
self.assertEqual(DateTimeFormatter.iptc_time(d), '19:03:37+00:00')
151
self.assertRaises(TypeError, DateTimeFormatter.iptc_time, None)
152
self.assertRaises(TypeError, DateTimeFormatter.iptc_time, 3.14)
156
d = datetime.datetime(1899, 12, 31)
157
self.assertEqual(DateTimeFormatter.xmp(d), '1899-12-31')
158
d = datetime.datetime(1899, 12, 31, tzinfo=FixedOffset())
159
self.assertEqual(DateTimeFormatter.xmp(d), '1899-12-31')
160
d = datetime.datetime(1899, 12, 31, 23, 59)
161
self.assertEqual(DateTimeFormatter.xmp(d), '1899-12-31T23:59Z')
162
d = datetime.datetime(1899, 12, 31, 23, 59, tzinfo=FixedOffset())
163
self.assertEqual(DateTimeFormatter.xmp(d), '1899-12-31T23:59Z')
164
d = datetime.datetime(1899, 12, 31, 23, 59, tzinfo=FixedOffset(hours=3))
165
self.assertEqual(DateTimeFormatter.xmp(d), '1899-12-31T23:59+03:00')
166
d = datetime.datetime(1899, 12, 31, 23, 59, 59)
167
self.assertEqual(DateTimeFormatter.xmp(d), '1899-12-31T23:59:59Z')
168
d = datetime.datetime(1899, 12, 31, 23, 59, 59, tzinfo=FixedOffset())
169
self.assertEqual(DateTimeFormatter.xmp(d), '1899-12-31T23:59:59Z')
170
d = datetime.datetime(1899, 12, 31, 23, 59, 59, tzinfo=FixedOffset(hours=3))
171
self.assertEqual(DateTimeFormatter.xmp(d), '1899-12-31T23:59:59+03:00')
172
d = datetime.datetime(1899, 12, 31, 23, 59, 59, 999999)
173
self.assertEqual(DateTimeFormatter.xmp(d), '1899-12-31T23:59:59.999999Z')
174
d = datetime.datetime(1899, 12, 31, 23, 59, 59, 999999, tzinfo=FixedOffset())
175
self.assertEqual(DateTimeFormatter.xmp(d), '1899-12-31T23:59:59.999999Z')
176
d = datetime.datetime(1899, 12, 31, 23, 59, 59, 999999, tzinfo=FixedOffset(hours=3))
177
self.assertEqual(DateTimeFormatter.xmp(d), '1899-12-31T23:59:59.999999+03:00')
178
d = datetime.datetime(2011, 8, 11, 9, 23, 44)
179
self.assertEqual(DateTimeFormatter.xmp(d), '2011-08-11T09:23:44Z')
182
d = datetime.date(1899, 12, 31)
183
self.assertEqual(DateTimeFormatter.xmp(d), '1899-12-31')
184
d = datetime.date(2011, 8, 8)
185
self.assertEqual(DateTimeFormatter.xmp(d), '2011-08-08')
188
self.assertRaises(TypeError, DateTimeFormatter.xmp, None)
189
self.assertRaises(TypeError, DateTimeFormatter.xmp, 3.14)