From 028e8a5dbf64c8f597085a01e2f48ec9ed9ccf84 Mon Sep 17 00:00:00 2001 From: Ynse Hoornenborg Date: Wed, 27 Dec 2023 13:43:46 +0100 Subject: [PATCH] Initial tests --- .../Formats/Heic/HeicDecoderTests.cs | 42 +++++++++++++++++++ .../Formats/Heic/HeicEncoderTests.cs | 32 ++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 tests/ImageSharp.Tests/Formats/Heic/HeicDecoderTests.cs create mode 100644 tests/ImageSharp.Tests/Formats/Heic/HeicEncoderTests.cs diff --git a/tests/ImageSharp.Tests/Formats/Heic/HeicDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Heic/HeicDecoderTests.cs new file mode 100644 index 0000000000..108eba286b --- /dev/null +++ b/tests/ImageSharp.Tests/Formats/Heic/HeicDecoderTests.cs @@ -0,0 +1,42 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +using SixLabors.ImageSharp.Formats.Heic; +using SixLabors.ImageSharp.PixelFormats; + +namespace SixLabors.ImageSharp.Tests.Formats.Heic; + +[Trait("Format", "Heic")] +[ValidateDisposedMemoryAllocations] +public class HeicDecoderTests +{ + [Theory] + [InlineData(TestImages.Heic.Image1)] + [InlineData(TestImages.Heic.Sample640x427)] + public void Identify(string imagePath) + { + TestFile testFile = TestFile.Create(imagePath); + using MemoryStream stream = new(testFile.Bytes, false); + + ImageInfo imageInfo = Image.Identify(stream); + HeicMetadata heicMetadata = imageInfo.Metadata.GetHeicMetadata(); + + Assert.NotNull(imageInfo); + Assert.Equal(imageInfo.Metadata.DecodedImageFormat, HeicFormat.Instance); + //Assert.Equal(heicMetadata.Channels, channels); + } + + [Theory] + [WithFile(TestImages.Heic.Image1, PixelTypes.Rgba32)] + [WithFile(TestImages.Heic.Sample640x427, PixelTypes.Rgba32)] + public void Decode(TestImageProvider provider) + where TPixel : unmanaged, IPixel + { + using Image image = provider.GetImage(); + HeicMetadata qoiMetadata = image.Metadata.GetHeicMetadata(); + image.DebugSave(provider); + + image.CompareToReferenceOutput(provider); + //Assert.Equal(heicMetadata.Channels, channels); + } +} diff --git a/tests/ImageSharp.Tests/Formats/Heic/HeicEncoderTests.cs b/tests/ImageSharp.Tests/Formats/Heic/HeicEncoderTests.cs new file mode 100644 index 0000000000..8bfbce973f --- /dev/null +++ b/tests/ImageSharp.Tests/Formats/Heic/HeicEncoderTests.cs @@ -0,0 +1,32 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +using SixLabors.ImageSharp.Formats.Heic; +using SixLabors.ImageSharp.PixelFormats; +using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; +using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs; + +namespace SixLabors.ImageSharp.Tests.Formats.Heic; + +[Trait("Format", "Heic")] +[ValidateDisposedMemoryAllocations] +public class HeicEncoderTests +{ + [Theory] + [WithFile(TestImages.Heic.Sample640x427, PixelTypes.Rgba32)] + public static void Encode(TestImageProvider provider) + where TPixel : unmanaged, IPixel + { + using Image image = provider.GetImage(new MagickReferenceDecoder()); + using MemoryStream stream = new(); + HeicEncoder encoder = new(); + image.Save(stream, encoder); + stream.Position = 0; + + using Image encodedImage = (Image)Image.Load(stream); + HeicMetadata heicMetadata = encodedImage.Metadata.GetHeicMetadata(); + + ImageComparer.Exact.CompareImages(image, encodedImage); + //Assert.Equal(heicMetadata.Channels, channels); + } +}