@@ -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