From b79b409de3f77acddb2889104535ec90e8b19f90 Mon Sep 17 00:00:00 2001 From: Ildar Khayrutdinov Date: Sat, 8 Jan 2022 14:22:40 +0300 Subject: [PATCH] add test --- .../Profiles/Exif/ExifProfileTests.cs | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/ImageSharp.Tests/Metadata/Profiles/Exif/ExifProfileTests.cs b/tests/ImageSharp.Tests/Metadata/Profiles/Exif/ExifProfileTests.cs index e144ece6c..028f1967d 100644 --- a/tests/ImageSharp.Tests/Metadata/Profiles/Exif/ExifProfileTests.cs +++ b/tests/ImageSharp.Tests/Metadata/Profiles/Exif/ExifProfileTests.cs @@ -487,6 +487,28 @@ namespace SixLabors.ImageSharp.Tests.Metadata.Profiles.Exif return profile; } + [Fact] + public void IfdStructure() + { + var exif = new ExifProfile(); + exif.SetValue(ExifTag.XPAuthor, Encoding.GetEncoding("UCS-2").GetBytes("Dan Petitt")); + + byte[] actualBytes = exif.ToByteArray(); + + // Assert + int ifdOffset = ExifConstants.LittleEndianByteOrderMarker.Length; + Assert.Equal(8, actualBytes[ifdOffset]); + Assert.Equal(0, actualBytes[ifdOffset + 1]); + Assert.Equal(0, actualBytes[ifdOffset + 2]); + Assert.Equal(0, actualBytes[ifdOffset + 3]); + + int nextIfdPointerOffset = ExifConstants.LittleEndianByteOrderMarker.Length + 4 + 2 + 12; + Assert.Equal(0, actualBytes[nextIfdPointerOffset]); + Assert.Equal(0, actualBytes[nextIfdPointerOffset + 1]); + Assert.Equal(0, actualBytes[nextIfdPointerOffset + 2]); + Assert.Equal(0, actualBytes[nextIfdPointerOffset + 3]); + } + internal static ExifProfile GetExifProfile() { using Image image = TestFile.Create(TestImages.Jpeg.Baseline.Floorplan).CreateRgba32Image();