Example #1
0
    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])
Example #2
0
 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')
Example #3
0
File: exif.py Project: Namejs/workr
    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)
Example #4
0
    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])
Example #5
0
    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)
Example #6
0
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]
Example #7
0
    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)
Example #8
0
def test_set_raw_value_invalid():
    tag = ExifTag('Exif.GPSInfo.GPSVersionID')
    with pytest.raises(ValueError):
        tag.raw_value = '2 0 0 foo'