69
69
# Valid values: strings
70
70
tag = ExifTagMock('Exif.Image.Copyright', type)
71
71
self.assertEqual(tag._convert_to_python('Some text.'), u'Some text.')
72
self.assertEqual(tag._convert_to_python('Some text with exotic chàräctérʐ.'), u'Some text with exotic chàräctérʐ.')
72
self.assertEqual(tag._convert_to_python('Some text with exotic chàräctérʐ.'),
73
u'Some text with exotic chàräctérʐ.')
74
75
# Invalid values: datetimes
75
76
tag = ExifTagMock('Exif.Image.DateTime', type)
78
79
self.assertEqual(tag._convert_to_python('2009-12-01'), u'2009-12-01')
80
81
def test_convert_to_string_ascii(self):
82
84
# Valid values: datetimes
83
self.assertEqual(ExifTag._convert_to_string(datetime.datetime(2009, 03, 01, 12, 54, 28), xtype),
85
tag = ExifTagMock('Exif.Image.DateTime', type)
86
self.assertEqual(tag._convert_to_string(datetime.datetime(2009, 03, 01, 12, 54, 28)),
84
87
'2009:03:01 12:54:28')
85
self.assertEqual(ExifTag._convert_to_string(datetime.date(2009, 03, 01), xtype),
88
self.assertEqual(tag._convert_to_string(datetime.date(2009, 03, 01)),
86
89
'2009:03:01 00:00:00')
87
91
# Valid values: strings
88
self.assertEqual(ExifTag._convert_to_string(u'Some text', xtype), 'Some text')
89
self.assertEqual(ExifTag._convert_to_string(u'Some text with exotic chàräctérʐ.', xtype),
90
'Some text with exotic chàräctérʐ.')
91
self.assertEqual(ExifTag._convert_to_string('Some text with exotic chàräctérʐ.', xtype),
92
'Some text with exotic chàräctérʐ.')
92
tag = ExifTagMock('Exif.Image.Copyright', type)
93
self.assertEqual(tag._convert_to_string(u'Some text'), 'Some text')
94
self.assertEqual(tag._convert_to_string(u'Some text with exotic chàräctérʐ.'),
95
'Some text with exotic chàräctérʐ.')
96
self.assertEqual(tag._convert_to_string('Some text with exotic chàräctérʐ.'),
97
'Some text with exotic chàräctérʐ.')
94
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, None, xtype)
100
self.failUnlessRaises(ExifValueError, tag._convert_to_string, None)
96
102
def test_convert_to_python_byte(self):
100
tag = ExifTagMock('Exif.Image.DateTime', type)
106
tag = ExifTagMock('Exif.GPSInfo.GPSVersionID', type)
101
107
self.assertEqual(tag._convert_to_python('D'), 'D')
103
109
def test_convert_to_string_byte(self):
106
self.assertEqual(ExifTag._convert_to_string('Some text', xtype), 'Some text')
107
self.assertEqual(ExifTag._convert_to_string(u'Some text', xtype), 'Some text')
113
tag = ExifTagMock('Exif.GPSInfo.GPSVersionID', type)
114
self.assertEqual(tag._convert_to_string('Some text'), 'Some text')
115
self.assertEqual(tag._convert_to_string(u'Some text'), 'Some text')
109
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, None, xtype)
118
self.failUnlessRaises(ExifValueError, tag._convert_to_string, None)
111
120
def test_convert_to_python_short(self):
123
132
self.failUnlessRaises(ExifValueError, tag._convert_to_python, '1E3')
125
134
def test_convert_to_string_short(self):
128
self.assertEqual(ExifTag._convert_to_string(123, xtype), '123')
138
tag = ExifTagMock('Exif.Image.BitsPerSample', type)
139
self.assertEqual(tag._convert_to_string(123), '123')
130
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, -57, xtype)
131
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, 'invalid', xtype)
132
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, 3.14, xtype)
142
self.failUnlessRaises(ExifValueError, tag._convert_to_string, -57)
143
self.failUnlessRaises(ExifValueError, tag._convert_to_string, 'invalid')
144
self.failUnlessRaises(ExifValueError, tag._convert_to_string, 3.14)
134
146
def test_convert_to_python_long(self):
146
158
self.failUnlessRaises(ExifValueError, tag._convert_to_python, '1E3')
148
160
def test_convert_to_string_long(self):
151
self.assertEqual(ExifTag._convert_to_string(123, xtype), '123')
152
self.assertEqual(ExifTag._convert_to_string(678024, xtype), '678024')
164
tag = ExifTagMock('Exif.Image.ImageWidth', type)
165
self.assertEqual(tag._convert_to_string(123), '123')
166
self.assertEqual(tag._convert_to_string(678024), '678024')
154
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, -57, xtype)
155
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, 'invalid', xtype)
156
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, 3.14, xtype)
169
self.failUnlessRaises(ExifValueError, tag._convert_to_string, -57)
170
self.failUnlessRaises(ExifValueError, tag._convert_to_string, 'invalid')
171
self.failUnlessRaises(ExifValueError, tag._convert_to_string, 3.14)
158
173
def test_convert_to_python_slong(self):
171
186
self.failUnlessRaises(ExifValueError, tag._convert_to_python, '1E3')
173
188
def test_convert_to_string_slong(self):
176
self.assertEqual(ExifTag._convert_to_string(123, xtype), '123')
177
self.assertEqual(ExifTag._convert_to_string(678024, xtype), '678024')
178
self.assertEqual(ExifTag._convert_to_string(-437, xtype), '-437')
192
tag = ExifTagMock('Exif.OlympusCs.ManometerReading', type)
193
self.assertEqual(tag._convert_to_string(123), '123')
194
self.assertEqual(tag._convert_to_string(678024), '678024')
195
self.assertEqual(tag._convert_to_string(-437), '-437')
180
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, 'invalid', xtype)
181
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, 3.14, xtype)
198
self.failUnlessRaises(ExifValueError, tag._convert_to_string, 'invalid')
199
self.failUnlessRaises(ExifValueError, tag._convert_to_string, 3.14)
183
201
def test_convert_to_python_rational(self):
184
202
type = 'Rational'
194
212
self.failUnlessRaises(ExifValueError, tag._convert_to_python, '5/-3')
196
214
def test_convert_to_string_rational(self):
199
self.assertEqual(ExifTag._convert_to_string(Rational(5, 3), xtype), '5/3')
218
tag = ExifTagMock('Exif.Image.XResolution', type)
219
self.assertEqual(tag._convert_to_string(Rational(5, 3)), '5/3')
201
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, 'invalid', xtype)
202
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, Rational(-5, 3), xtype)
222
self.failUnlessRaises(ExifValueError, tag._convert_to_string, 'invalid')
223
self.failUnlessRaises(ExifValueError,
224
tag._convert_to_string, Rational(-5, 3))
204
226
def test_convert_to_python_srational(self):
205
227
type = 'SRational'
215
237
self.failUnlessRaises(ExifValueError, tag._convert_to_python, '5/-3')
217
239
def test_convert_to_string_srational(self):
220
self.assertEqual(ExifTag._convert_to_string(Rational(5, 3), xtype), '5/3')
221
self.assertEqual(ExifTag._convert_to_string(Rational(-5, 3), xtype), '-5/3')
243
tag = ExifTagMock('Exif.Image.BaselineExposure', type)
244
self.assertEqual(tag._convert_to_string(Rational(5, 3)), '5/3')
245
self.assertEqual(tag._convert_to_string(Rational(-5, 3)), '-5/3')
223
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, 'invalid', xtype)
248
self.failUnlessRaises(ExifValueError, tag._convert_to_string, 'invalid')
225
250
def test_convert_to_python_undefined(self):
226
251
type = 'Undefined'
236
261
self.failUnlessRaises(ExifValueError, tag._convert_to_python, 'abc')
238
263
def test_convert_to_string_undefined(self):
241
self.assertEqual(ExifTag._convert_to_string('48 49 48 48 ', xtype), '48 49 48 48 ')
242
self.assertEqual(ExifTag._convert_to_string(u'48 49 48 48 ', xtype), '48 49 48 48 ')
267
tag = ExifTagMock('Exif.Photo.ExifVersion', type)
268
self.assertEqual(tag._convert_to_string('48 49 48 48 '), '48 49 48 48 ')
269
self.assertEqual(tag._convert_to_string(u'48 49 48 48 '), '48 49 48 48 ')
244
self.failUnlessRaises(ExifValueError, ExifTag._convert_to_string, 3, xtype)
272
self.failUnlessRaises(ExifValueError, tag._convert_to_string, 3)
246
274
def test_set_value_no_metadata(self):
247
275
tag = ExifTag('Exif.Thumbnail.Orientation', 'Orientation',