Skip to content

Commit 2ebff92

Browse files
Add tests of BMFF image handling
1 parent 75a85d6 commit 2ebff92

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

tests/image_02.heic

11 KB
Binary file not shown.

tests/test_image.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class TestImageModule(unittest.TestCase):
2929
def setUpClass(cls):
3030
test_dir = os.path.dirname(__file__)
3131
cls.image_path = os.path.join(test_dir, 'image_02.jpg')
32+
cls.bmff_path = os.path.join(test_dir, 'image_02.heic')
3233
# read image file data into memory
3334
with open(cls.image_path, 'rb') as f:
3435
cls.image_data = f.read()
@@ -37,9 +38,27 @@ def check_result(self, result, expected_type, expected_value):
3738
self.assertIsInstance(result, expected_type)
3839
self.assertEqual(result, expected_value)
3940

41+
def test_BMFF(self):
42+
self.assertEqual(exiv2.enableBMFF(True),
43+
exiv2.versionInfo()['EXV_ENABLE_BMFF'])
44+
with open(self.bmff_path, 'rb') as f:
45+
image_data = f.read()
46+
if not exiv2.versionInfo()['EXV_ENABLE_BMFF']:
47+
if (exiv2.testVersion(0, 28, 0)
48+
or not exiv2.versionInfo()['EXV_ENABLE_VIDEO']):
49+
with self.assertRaises(exiv2.Exiv2Error) as cm:
50+
image = exiv2.ImageFactory.open(image_data)
51+
self.assertEqual(cm.exception.code,
52+
exiv2.ErrorCode.kerMemoryContainsUnknownImageType)
53+
self.skipTest('EXV_ENABLE_BMFF is off')
54+
image = exiv2.ImageFactory.open(image_data)
55+
image.readMetadata()
56+
self.assertEqual(len(image.exifData()), 29)
57+
self.assertEqual(len(image.iptcData()), 0)
58+
self.assertEqual(len(image.xmpData()), 26)
59+
self.assertEqual(len(image.iccProfile()), 672)
60+
4061
def test_Image(self):
41-
if exiv2.testVersion(0, 27, 4):
42-
self.assertIsInstance(exiv2.enableBMFF(True), bool)
4362
# open image in memory so we don't corrupt the file
4463
image = exiv2.ImageFactory.open(self.image_data)
4564
self.assertEqual(len(image.io()), 15125)

0 commit comments

Comments
 (0)