def test_makernote_types(self): # Makernote tags not attached to an image have an Undefined type by # default. When read from an existing image though, their type should be # correctly set (see https://bugs.launchpad.net/pyexiv2/+bug/781464). tag1 = ExifTag('Exif.Pentax.PreviewResolution') tag1.raw_value = '640 480' self.assertEqual(tag1.type, 'Undefined') self.failUnlessRaises(ValueError, getattr, tag1, 'value') tag2 = ExifTag('Exif.Pentax.CameraInfo') tag2.raw_value = '76830 20070527 2 1 4228109' self.assertEqual(tag2.type, 'Undefined') self.failUnlessRaises(ValueError, getattr, tag2, 'value') filepath = testutils.get_absolute_file_path( os.path.join('data', 'pentax-makernote.jpg')) checksum = '646804b309a4a2d31feafe9bffc5d7f0' self.assert_(testutils.CheckFileSum(filepath, checksum)) metadata = ImageMetadata(filepath) metadata.read() tag1 = metadata[tag1.key] self.assertEqual(tag1.type, 'Short') self.assertEqual(tag1.value, [640, 480]) tag2 = metadata[tag2.key] self.assertEqual(tag2.type, 'Long') self.assertEqual(tag2.value, [76830L, 20070527L, 2L, 1L, 4228109L])
def test_convert_to_string_comment(self): # Valid values tag = ExifTag('Exif.Photo.UserComment') self.assertEqual(tag.type, 'Comment') self.assertEqual(tag._convert_to_string('A comment'), b'A comment') charsets = ('Ascii', 'Jis', 'Unicode', 'Undefined') for charset in charsets: tag.raw_value = 'charset="%s" foo' % charset self.assertEqual(tag._convert_to_string('A comment'), b'A comment') self.assertEqual(tag._convert_to_string('déjà vu'), b'd\xc3\xa9j\xc3\xa0 vu')
def test_convert_to_string_comment(self): # Valid values tag = ExifTag("Exif.Photo.UserComment") self.assertEqual(tag.type, "Comment") self.assertEqual(tag._convert_to_string("A comment"), "A comment") self.assertEqual(tag._convert_to_string(u"A comment"), "A comment") charsets = ("Ascii", "Jis", "Unicode", "Undefined") for charset in charsets: tag.raw_value = 'charset="%s" foo' % charset self.assertEqual(tag._convert_to_string("A comment"), 'charset="%s" A comment' % charset) self.assertEqual(tag._convert_to_string("déjà vu"), "déjà vu") # Invalid values self.failUnlessRaises(ExifValueError, tag._convert_to_string, None)
def test_makernote_types(self): # Makernote tags not attached to an image have an Undefined type by # default. When read from an existing image though, their type should be # correctly set (see https://bugs.launchpad.net/pyexiv2/+bug/781464). tag1 = ExifTag('Exif.Pentax.PreviewResolution') tag1.raw_value = '640 480' self.assertEqual(tag1.type, 'Undefined') self.failUnlessRaises(ValueError, getattr, tag1, 'value') tag2 = ExifTag('Exif.Pentax.CameraInfo') tag2.raw_value = '76830 20070527 2 1 4228109' self.assertEqual(tag2.type, 'Undefined') self.failUnlessRaises(ValueError, getattr, tag2, 'value') filepath = testutils.get_absolute_file_path(os.path.join('data', 'pentax-makernote.jpg')) checksum = '646804b309a4a2d31feafe9bffc5d7f0' self.assert_(testutils.CheckFileSum(filepath, checksum)) metadata = ImageMetadata(filepath) metadata.read() tag1 = metadata[tag1.key] self.assertEqual(tag1.type, 'Short') self.assertEqual(tag1.value, [640, 480]) tag2 = metadata[tag2.key] self.assertEqual(tag2.type, 'Long') self.assertEqual(tag2.value, [76830L, 20070527L, 2L, 1L, 4228109L])
def test_convert_to_string_comment(self): # Valid values tag = ExifTag('Exif.Photo.UserComment') self.assertEqual(tag.type, 'Comment') self.assertEqual(tag._convert_to_string('A comment'), 'A comment') self.assertEqual(tag._convert_to_string(u'A comment'), 'A comment') charsets = ('Ascii', 'Jis', 'Unicode', 'Undefined') for charset in charsets: tag.raw_value = 'charset="%s" foo' % charset self.assertEqual(tag._convert_to_string('A comment'), 'charset="%s" A comment' % charset) self.assertEqual(tag._convert_to_string('déjà vu'), 'déjà vu') # Invalid values self.failUnlessRaises(ExifValueError, tag._convert_to_string, None)
def test_makernote_types(): # Makernote tags not attached to an image have an Undefined type by # default. When read from an existing image though, their type should # be correctly set. # See <https://bugs.launchpad.net/pyexiv2/+bug/781464>. tag1 = ExifTag('Exif.Pentax.PreviewResolution') tag1.raw_value = '640 480' assert tag1.type == 'Undefined' tag2 = ExifTag('Exif.Pentax.CameraInfo') tag2.raw_value = '76830 20070527 2 1 4228109' assert tag2.type == 'Undefined' with pytest.raises(ValueError): tag2.value metadata = load_image('pentax-makernote.jpg', '646804b309a4a2d31feafe9bffc5d7f0') tag1 = metadata[tag1.key] assert tag1.type == 'Short' assert tag1.value == [640, 480] tag2 = metadata[tag2.key] assert tag2.type == 'Long' assert tag2.value == [76830, 20070527, 2, 1, 4228109]
def test_set_raw_value_invalid(): tag = ExifTag('Exif.GPSInfo.GPSVersionID') with pytest.raises(ValueError): tag.raw_value = '2 0 0 foo'