diff options
author | Olivier Tilloy <olivier@tilloy.net> | 2010-11-23 20:49:04 +0100 |
---|---|---|
committer | Olivier Tilloy <olivier@tilloy.net> | 2010-11-23 20:49:04 +0100 |
commit | 2517ce2efcdea061e4a267f7ede70b15cee2a0f3 (patch) | |
tree | cd41b643afdae8e3e669cb7e23a14fff88ddec59 /test/metadata.py | |
parent | cc86aa2c24b3c53444c108b82295aae2085904db (diff) | |
parent | 17689217344b7875fd2e701035e814e172af9630 (diff) | |
download | pyexiv2-2517ce2efcdea061e4a267f7ede70b15cee2a0f3.tar.gz |
Read/write access to the EXIF thumbnail.
Diffstat (limited to 'test/metadata.py')
-rw-r--r-- | test/metadata.py | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/test/metadata.py b/test/metadata.py index 9ee7b32..a23abb9 100644 --- a/test/metadata.py +++ b/test/metadata.py @@ -647,3 +647,97 @@ class TestImageMetadata(unittest.TestCase): self.assertTrue('Exif.Photo.UserComment' not in self.clean) self.assertTrue('Iptc.Application2.Caption' not in self.clean) self.assertTrue('Xmp.dc.subject' not in self.clean) + + ########################### + # Test the EXIF thumbnail # + ########################### + + def _test_thumbnail_tags(self, there): + keys = ('Exif.Thumbnail.Compression', + 'Exif.Thumbnail.JPEGInterchangeFormat', + 'Exif.Thumbnail.JPEGInterchangeFormatLength') + for key in keys: + self.assertEqual(key in self.metadata.exif_keys, there) + + def test_no_exif_thumbnail(self): + self.metadata.read() + thumb = self.metadata.exif_thumbnail + self.assertEqual(thumb.mime_type, '') + self.assertEqual(thumb.extension, '') + self.assertEqual(thumb.data, '') + self._test_thumbnail_tags(False) + + def test_set_exif_thumbnail_from_data(self): + self.metadata.read() + self._test_thumbnail_tags(False) + thumb = self.metadata.exif_thumbnail + thumb.data = EMPTY_JPG_DATA + self.assertEqual(thumb.mime_type, 'image/jpeg') + self.assertEqual(thumb.extension, '.jpg') + self.assertEqual(thumb.data, EMPTY_JPG_DATA) + self._test_thumbnail_tags(True) + + def test_set_exif_thumbnail_from_file(self): + fd, pathname = tempfile.mkstemp(suffix='.jpg') + os.write(fd, EMPTY_JPG_DATA) + os.close(fd) + self.metadata.read() + self._test_thumbnail_tags(False) + thumb = self.metadata.exif_thumbnail + thumb.set_from_file(pathname) + os.remove(pathname) + self.assertEqual(thumb.mime_type, 'image/jpeg') + self.assertEqual(thumb.extension, '.jpg') + self.assertEqual(thumb.data, EMPTY_JPG_DATA) + self._test_thumbnail_tags(True) + + def test_write_exif_thumbnail_to_file(self): + self.metadata.read() + self._test_thumbnail_tags(False) + thumb = self.metadata.exif_thumbnail + thumb.data = EMPTY_JPG_DATA + fd, pathname = tempfile.mkstemp() + os.close(fd) + os.remove(pathname) + thumb.write_to_file(pathname) + pathname = pathname + thumb.extension + fd = open(pathname) + self.assertEqual(fd.read(), EMPTY_JPG_DATA) + fd.close() + os.remove(pathname) + + def test_erase_exif_thumbnail(self): + self.metadata.read() + self._test_thumbnail_tags(False) + thumb = self.metadata.exif_thumbnail + thumb.data = EMPTY_JPG_DATA + self.assertEqual(thumb.mime_type, 'image/jpeg') + self.assertEqual(thumb.extension, '.jpg') + self.assertEqual(thumb.data, EMPTY_JPG_DATA) + self._test_thumbnail_tags(True) + thumb.erase() + self.assertEqual(thumb.mime_type, '') + self.assertEqual(thumb.extension, '') + self.assertEqual(thumb.data, '') + self._test_thumbnail_tags(False) + + def test_set_exif_thumbnail_from_invalid_data(self): + # No check on the format of the buffer is performed, therefore it will + # always work. + self.metadata.read() + self._test_thumbnail_tags(False) + thumb = self.metadata.exif_thumbnail + thumb.data = 'invalid' + self.assertEqual(thumb.mime_type, 'image/jpeg') + self._test_thumbnail_tags(True) + + def test_set_exif_thumbnail_from_inexistent_file(self): + self.metadata.read() + self._test_thumbnail_tags(False) + thumb = self.metadata.exif_thumbnail + fd, pathname = tempfile.mkstemp() + os.close(fd) + os.remove(pathname) + self.failUnlessRaises(IOError, thumb.set_from_file, pathname) + self._test_thumbnail_tags(False) + |