// Copyright (c) Six Labors and contributors. // Licensed under the Apache License, Version 2.0. using System; using Moq; using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison; using Xunit; namespace SixLabors.ImageSharp.Tests { public class TestImageExtensionsTests { [Theory] [WithSolidFilledImages(10, 10, 0, 0, 255, PixelTypes.Rgba32)] public void CompareToReferenceOutput_WhenReferenceOutputMatches_ShouldNotThrow( TestImageProvider provider) where TPixel : struct, IPixel { using Image image = provider.GetImage(); image.CompareToReferenceOutput(provider); } [Theory] [WithSolidFilledImages(10, 10, 0, 0, 255, PixelTypes.Rgba32)] public void CompareToReferenceOutput_WhenReferenceOutputDoesNotMatch_Throws( TestImageProvider provider) where TPixel : struct, IPixel { using Image image = provider.GetImage(); Assert.ThrowsAny(() => image.CompareToReferenceOutput(provider)); } [Theory] [WithSolidFilledImages(10, 10, 0, 0, 255, PixelTypes.Rgba32)] public void CompareToReferenceOutput_DoNotAppendPixelType( TestImageProvider provider) where TPixel : struct, IPixel { using Image image = provider.GetImage(); image.DebugSave(provider, appendPixelTypeToFileName: false); image.CompareToReferenceOutput(provider, appendPixelTypeToFileName: false); } [Theory] [WithSolidFilledImages(10, 10, 0, 0, 255, PixelTypes.Rgba32)] public void CompareToReferenceOutput_WhenReferenceFileMissing_Throws(TestImageProvider provider) where TPixel : struct, IPixel { using Image image = provider.GetImage(); Assert.ThrowsAny(() => image.CompareToReferenceOutput(provider)); } [Theory] [WithFile(TestImages.Png.CalliphoraPartial, PixelTypes.Rgba32)] public void CompareToOriginal_WhenSimilar(TestImageProvider provider) where TPixel : struct, IPixel { using Image image = provider.GetImage(); using Image clone = image.Clone(); clone.CompareToOriginal(provider, ImageComparer.Exact); } [Theory] [WithFile(TestImages.Png.CalliphoraPartial, PixelTypes.Rgba32)] public void CompareToOriginal_WhenDifferent_Throws(TestImageProvider provider) where TPixel : struct, IPixel { using Image image = provider.GetImage(); ImagingTestCaseUtility.ModifyPixel(image, 3, 1, 1); Assert.ThrowsAny(() => { image.CompareToOriginal(provider, ImageComparer.Exact); }); } [Theory] [WithBlankImages(10, 10, PixelTypes.Rgba32)] public void CompareToOriginal_WhenInputIsNotFromFile_Throws(TestImageProvider provider) where TPixel : struct, IPixel { using Image image = provider.GetImage(); Assert.ThrowsAny(() => { image.CompareToOriginal(provider, Mock.Of()); }); } } }