# -*- coding: utf-8 -*-
import itertools
import system_tests
TYPES = ["8BIM", "AgHg", "DCSR", "PHUT"]
FORMATS = ["jpg", "psd"]
def make_commands(filename):
return [
"""$exiv2 -u -v -M"set Exif.Photo.UserComment Test" """ + filename,
"$exiv2 -u -pt " + filename
]
def make_filename(irb_type, img_format):
return "$data_path/exiv2-bug800-" + irb_type + "_copy." + img_format
def make_stdout(irb_type, img_format):
first = """File 1/1: """ + make_filename(irb_type, img_format) + """
Set Exif.Photo.UserComment "Test" (Comment)
"""
if img_format == "jpg":
second = """Exif.Image.Orientation Short 1 top, left
Exif.Image.XResolution Rational 1 180
Exif.Image.YResolution Rational 1 180
Exif.Image.ResolutionUnit Short 1 inch
Exif.Image.Software Ascii 16 QuickTime 6.5.2
Exif.Image.DateTime Ascii 20 2005:03:27 19:46:52
Exif.Image.HostComputer Ascii 16 Mac OS X 10.3.8
Exif.Image.YCbCrPositioning Short 1 Centered
Exif.Image.ExifTag Long 1 190
Exif.Photo.ExposureTime Rational 1 1/200 s
Exif.Photo.FNumber Rational 1 F7.1
Exif.Photo.ExifVersion Undefined 4 2.20
Exif.Photo.DateTimeOriginal Ascii 20 2005:03:18 22:15:08
Exif.Photo.DateTimeDigitized Ascii 20 2005:03:18 22:15:08
Exif.Photo.ComponentsConfiguration Undefined 4 YCbCr
Exif.Photo.CompressedBitsPerPixel Rational 1 5
Exif.Photo.ShutterSpeedValue SRational 1 1/202 s
Exif.Photo.ApertureValue Rational 1 F7.1
Exif.Photo.ExposureBiasValue SRational 1 0 EV
Exif.Photo.MaxApertureValue Rational 1 F2.8
Exif.Photo.MeteringMode Short 1 Multi-segment
Exif.Photo.Flash Short 1 No, auto
Exif.Photo.FocalLength Rational 1 7.4 mm
Exif.Photo.MakerNote Undefined 590 (Binary value suppressed)
Exif.Photo.UserComment Undefined 12 Test
Exif.Photo.FlashpixVersion Undefined 4 1.00
Exif.Photo.PixelXDimension Short 1 2272
Exif.Photo.PixelYDimension Short 1 1704
Exif.Photo.FocalPlaneXResolution Rational 1 8114.29
Exif.Photo.FocalPlaneYResolution Rational 1 8114.29
Exif.Photo.FocalPlaneResolutionUnit Short 1 inch
Exif.Photo.SensingMethod Short 1 One-chip color area
Exif.Photo.FileSource Undefined 1 Digital still camera
Exif.Photo.CustomRendered Short 1 Normal process
Exif.Photo.ExposureMode Short 1 Auto
Exif.Photo.WhiteBalance Short 1 Auto
Exif.Photo.DigitalZoomRatio Rational 1 1.0
Exif.Photo.SceneCaptureType Short 1 Standard
"""
elif img_format == 'psd':
second = """Exif.Image.ImageWidth Short 1 150
Exif.Image.ImageLength Short 1 91
Exif.Image.BitsPerSample Short 3 8 8 8
Exif.Image.Orientation Short 1 top, left
Exif.Image.SamplesPerPixel Short 1 3
Exif.Image.XResolution Rational 1 72
Exif.Image.YResolution Rational 1 72
Exif.Image.ResolutionUnit Short 1 inch
Exif.Image.Software Ascii 30 Adobe Photoshop CS5 Macintosh
Exif.Image.DateTime Ascii 20 2011:06:27 21:41:02
Exif.Image.ExifTag Long 1 218
Exif.Photo.ExifVersion Undefined 4 2.21
Exif.Photo.UserComment Undefined 12 Test
Exif.Photo.ColorSpace Short 1 Uncalibrated
Exif.Photo.PixelXDimension Long 1 150
Exif.Photo.PixelYDimension Long 1 91
Exif.Thumbnail.Compression Short 1 JPEG (old-style)
Exif.Thumbnail.XResolution Rational 1 72
Exif.Thumbnail.YResolution Rational 1 72
Exif.Thumbnail.ResolutionUnit Short 1 inch
Exif.Thumbnail.JPEGInterchangeFormat Long 1 390
Exif.Thumbnail.JPEGInterchangeFormatLength Long 1 0
"""
return [first, second]
FILES = [
make_filename(irb_type, img_format)
for irb_type, img_format in itertools.product(TYPES, FORMATS)
]
ORIGINAL_FILES = [
"$data_path/exiv2-bug800-" + irb_type + "." + img_format
for irb_type, img_format in itertools.product(TYPES, FORMATS)
]
@system_tests.CopyFiles(*ORIGINAL_FILES)
class MissingPhotoshopIrbTypes(metaclass=system_tests.CaseMeta):
url = "http://dev.exiv2.org/issues/800"
types = ["8BIM", "AgHg", "DCSR", "PHUT"]
formats = ["jpg", "psd"]
commands = list(
itertools.chain.from_iterable(
make_commands(fname) for fname in FILES
)
)
stdout = list(
itertools.chain.from_iterable(
make_stdout(irb_type, img_format)
for irb_type, img_format in itertools.product(TYPES, FORMATS)
)
)
stderr = [""] * 16
retval = [0] * 16