diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index bc4b3b383f..dbc6cfe67a 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -447,6 +447,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Imaging.ImageSharp EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Imaging.MagickNet", "src\Volo.Abp.Imaging.MagickNet\Volo.Abp.Imaging.MagickNet.csproj", "{F701EDA5-D7EA-4AA7-9C57-83ED50CE72EC}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Imaging.Tests", "test\Volo.Abp.Imaging.Tests\Volo.Abp.Imaging.Tests.csproj", "{2BE6BDC7-A9A3-4E30-9099-A9EF4813F6FF}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1333,6 +1335,10 @@ Global {F701EDA5-D7EA-4AA7-9C57-83ED50CE72EC}.Debug|Any CPU.Build.0 = Debug|Any CPU {F701EDA5-D7EA-4AA7-9C57-83ED50CE72EC}.Release|Any CPU.ActiveCfg = Release|Any CPU {F701EDA5-D7EA-4AA7-9C57-83ED50CE72EC}.Release|Any CPU.Build.0 = Release|Any CPU + {2BE6BDC7-A9A3-4E30-9099-A9EF4813F6FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2BE6BDC7-A9A3-4E30-9099-A9EF4813F6FF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2BE6BDC7-A9A3-4E30-9099-A9EF4813F6FF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2BE6BDC7-A9A3-4E30-9099-A9EF4813F6FF}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1558,6 +1564,7 @@ Global {44467427-E0BE-492C-B9B4-82B362C183C3} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {F701EDA5-D7EA-4AA7-9C57-83ED50CE72EC} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {78340A37-219E-4F2D-9AC6-40A7B467EEEC} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {2BE6BDC7-A9A3-4E30-9099-A9EF4813F6FF} = {447C8A77-E5F0-4538-8687-7383196D04EA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo.Abp.Imaging.Abstractions.Tests.abppkg.json b/framework/test/Volo.Abp.Imaging.Tests/Volo.Abp.Imaging.Abstractions.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Tests/Volo.Abp.Imaging.Abstractions.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo.Abp.Imaging.Tests.csproj b/framework/test/Volo.Abp.Imaging.Tests/Volo.Abp.Imaging.Tests.csproj new file mode 100644 index 0000000000..4b84199ec8 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Tests/Volo.Abp.Imaging.Tests.csproj @@ -0,0 +1,22 @@ + + + + + + net7.0 + + + + + + + + + + + + + + + + diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestBase.cs b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestBase.cs new file mode 100644 index 0000000000..6ba84ac482 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestBase.cs @@ -0,0 +1,105 @@ +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Testing; +using Xunit; + +namespace Volo.Abp.Imaging; + +public abstract class AbpImagingAbstractionsTestBase : AbpIntegratedTest +{ + protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) + { + options.UseAutofac(); + } +} + +public class IIImageResizer_Tests : AbpImagingAbstractionsTestBase +{ + protected IImageResizer ImageResizer { get; } + + public IIImageResizer_Tests() + { + ImageResizer = GetRequiredService(); + } + [Fact] + public async Task Should_Resize_Jpg() + { + await using var jpegImage = ImageFileHelper.GetJpgTestFileStream(); + var resizedImage = await ImageResizer.ResizeAsync(jpegImage, new ImageResizeArgs(100, 100)); + + resizedImage.ShouldNotBeNull(); + resizedImage.State.ShouldBe(ProcessState.Unsupported); + + resizedImage.Result.ShouldBe(jpegImage); + } + + [Fact] + public async Task Should_Resize_Png() + { + await using var pngImage = ImageFileHelper.GetPngTestFileStream(); + var resizedImage = await ImageResizer.ResizeAsync(pngImage, new ImageResizeArgs(100, 100)); + + resizedImage.ShouldNotBeNull(); + resizedImage.State.ShouldBe(ProcessState.Unsupported); + + resizedImage.Result.ShouldBe(pngImage); + } + + [Fact] + public async Task Should_Resize_Webp() + { + await using var webpImage = ImageFileHelper.GetWebpTestFileStream(); + var resizedImage = await ImageResizer.ResizeAsync(webpImage, new ImageResizeArgs(100, 100)); + + resizedImage.ShouldNotBeNull(); + resizedImage.State.ShouldBe(ProcessState.Unsupported); + + resizedImage.Result.ShouldBe(webpImage); + } +} + +public class IIImageCompressor_Tests : AbpImagingAbstractionsTestBase +{ + protected IImageCompressor ImageCompressor { get; } + + public IIImageCompressor_Tests() + { + ImageCompressor = GetRequiredService(); + } + + [Fact] + public async Task Should_Compress_Jpg() + { + await using var jpegImage = ImageFileHelper.GetJpgTestFileStream(); + var compressedImage = await ImageCompressor.CompressAsync(jpegImage); + + compressedImage.ShouldNotBeNull(); + compressedImage.State.ShouldBe(ProcessState.Unsupported); + + compressedImage.Result.ShouldBe(jpegImage); + } + + [Fact] + public async Task Should_Compress_Png() + { + await using var pngImage = ImageFileHelper.GetPngTestFileStream(); + var compressedImage = await ImageCompressor.CompressAsync(pngImage); + + compressedImage.ShouldNotBeNull(); + compressedImage.State.ShouldBe(ProcessState.Unsupported); + + compressedImage.Result.ShouldBe(pngImage); + } + + [Fact] + public async Task Should_Compress_Webp() + { + await using var webpImage = ImageFileHelper.GetWebpTestFileStream(); + var compressedImage = await ImageCompressor.CompressAsync(webpImage); + + compressedImage.ShouldNotBeNull(); + compressedImage.State.ShouldBe(ProcessState.Unsupported); + + compressedImage.Result.ShouldBe(webpImage); + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestModule.cs b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestModule.cs new file mode 100644 index 0000000000..5d9bb12c49 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestModule.cs @@ -0,0 +1,14 @@ +using Volo.Abp.Autofac; +using Volo.Abp.Modularity; + +namespace Volo.Abp.Imaging; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(AbpImagingAbstractionsModule), + typeof(AbpTestBaseModule) +)] +public class AbpImagingAbstractionsTestModule : AbpModule +{ + +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpProviderTestBase.cs b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpProviderTestBase.cs new file mode 100644 index 0000000000..14f0857d38 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpProviderTestBase.cs @@ -0,0 +1,139 @@ +using System.IO; +using System.Threading.Tasks; +using Shouldly; +using Xunit; + +namespace Volo.Abp.Imaging; + +public abstract class AbpImagingImageSharpProviderTestBase : AbpImagingImageSharpTestBase +{ + protected IImageCompressor ImageCompressor { get; } + protected IImageResizer ImageResizer { get; } + + public AbpImagingImageSharpProviderTestBase() + { + ImageCompressor = GetRequiredService(); + ImageResizer = GetRequiredService(); + } +} + +public class ImageSharpImageCompressor_Tests : AbpImagingImageSharpProviderTestBase +{ + [Fact] + public async Task Should_Compress_Jpg() + { + await using var jpegImage = ImageFileHelper.GetJpgTestFileStream(); + var compressedImage = await ImageCompressor.CompressAsync(jpegImage); + + compressedImage.ShouldNotBeNull(); + compressedImage.State.ShouldBe(ProcessState.Done); + compressedImage.Result.Length.ShouldBeLessThan(jpegImage.Length); + compressedImage.Result.Dispose(); + } + + [Fact] + public async Task Should_Compress_Png() + { + await using var pngImage = ImageFileHelper.GetPngTestFileStream(); + var compressedImage = await ImageCompressor.CompressAsync(pngImage); + + compressedImage.ShouldNotBeNull(); + compressedImage.State.ShouldBe(ProcessState.Done); + compressedImage.Result.Length.ShouldBeLessThan(pngImage.Length); + compressedImage.Result.Dispose(); + } + + [Fact] + public async Task Should_Compress_Webp() + { + await using var webpImage = ImageFileHelper.GetWebpTestFileStream(); + var compressedImage = await ImageCompressor.CompressAsync(webpImage); + + compressedImage.ShouldNotBeNull(); + compressedImage.State.ShouldBe(ProcessState.Done); + compressedImage.Result.Length.ShouldBeLessThan(webpImage.Length); + compressedImage.Result.Dispose(); + } + + [Fact] + public async Task Should_Compress_Stream_And_Byte_Array_The_Same() + { + await using var jpegImage = ImageFileHelper.GetJpgTestFileStream(); + var byteArr = await jpegImage.GetAllBytesAsync(); + + var compressedImage1 = await ImageCompressor.CompressAsync(jpegImage); + var compressedImage2 = await ImageCompressor.CompressAsync(byteArr); + + compressedImage1.ShouldNotBeNull(); + compressedImage1.State.ShouldBe(ProcessState.Done); + + compressedImage2.ShouldNotBeNull(); + compressedImage2.State.ShouldBe(ProcessState.Done); + + compressedImage1.Result.Length.ShouldBeLessThan(jpegImage.Length); + compressedImage2.Result.LongLength.ShouldBeLessThan(jpegImage.Length); + + compressedImage1.Result.Length.ShouldBe(compressedImage2.Result.LongLength); + + compressedImage1.Result.Dispose(); + } +} + +public class ImageSharpImageResizer_Tests : AbpImagingImageSharpProviderTestBase +{ + [Fact] + public async Task Should_Resize_Jpg() + { + await using var jpegImage = ImageFileHelper.GetJpgTestFileStream(); + var resizedImage = await ImageResizer.ResizeAsync(jpegImage, new ImageResizeArgs(100, 100)); + + resizedImage.ShouldNotBeNull(); + resizedImage.State.ShouldBe(ProcessState.Done); + resizedImage.Result.Length.ShouldBeLessThan(jpegImage.Length); + } + + [Fact] + public async Task Should_Resize_Png() + { + await using var pngImage = ImageFileHelper.GetPngTestFileStream(); + var resizedImage = await ImageResizer.ResizeAsync(pngImage, new ImageResizeArgs(100, 100)); + + resizedImage.ShouldNotBeNull(); + resizedImage.State.ShouldBe(ProcessState.Done); + resizedImage.Result.Length.ShouldBeLessThan(pngImage.Length); + } + + [Fact] + public async Task Should_Resize_Webp() + { + await using var webpImage = ImageFileHelper.GetWebpTestFileStream(); + var resizedImage = await ImageResizer.ResizeAsync(webpImage, new ImageResizeArgs(100, 100)); + + resizedImage.ShouldNotBeNull(); + resizedImage.State.ShouldBe(ProcessState.Done); + resizedImage.Result.Length.ShouldBeLessThan(webpImage.Length); + } + + [Fact] + public async Task Should_Resize_Stream_And_Byte_Array_The_Same() + { + await using var jpegImage = ImageFileHelper.GetJpgTestFileStream(); + var byteArr = await jpegImage.GetAllBytesAsync(); + + var resizedImage1 = await ImageResizer.ResizeAsync(jpegImage, new ImageResizeArgs(100, 100)); + var resizedImage2 = await ImageResizer.ResizeAsync(byteArr, new ImageResizeArgs(100, 100)); + + resizedImage1.ShouldNotBeNull(); + resizedImage1.State.ShouldBe(ProcessState.Done); + + resizedImage2.ShouldNotBeNull(); + resizedImage2.State.ShouldBe(ProcessState.Done); + + resizedImage1.Result.Length.ShouldBeLessThan(jpegImage.Length); + resizedImage2.Result.LongLength.ShouldBeLessThan(jpegImage.Length); + + resizedImage1.Result.Length.ShouldBe(resizedImage2.Result.LongLength); + + resizedImage1.Result.Dispose(); + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestBase.cs b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestBase.cs new file mode 100644 index 0000000000..0921c2f770 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestBase.cs @@ -0,0 +1,11 @@ +using Volo.Abp.Testing; + +namespace Volo.Abp.Imaging; + +public abstract class AbpImagingImageSharpTestBase : AbpIntegratedTest +{ + protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) + { + options.UseAutofac(); + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestModule.cs b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestModule.cs new file mode 100644 index 0000000000..fe8cc8c8ae --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestModule.cs @@ -0,0 +1,15 @@ +using Volo.Abp.Autofac; +using Volo.Abp.Modularity; + +namespace Volo.Abp.Imaging; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(AbpImagingImageSharpModule), + typeof(AbpTestBaseModule) +)] + +public class AbpImagingImageSharpTestModule : AbpModule +{ + +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetProviderTestBase.cs b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetProviderTestBase.cs new file mode 100644 index 0000000000..b28ee86fff --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetProviderTestBase.cs @@ -0,0 +1,141 @@ +using System.IO; +using System.Threading.Tasks; +using Shouldly; +using Xunit; + +namespace Volo.Abp.Imaging; + +public abstract class AbpImagingMagickNetProviderTestBase : AbpImagingMagickNetTestBase +{ + protected IImageCompressor ImageCompressor { get; } + protected IImageResizer ImageResizer { get; } + + public AbpImagingMagickNetProviderTestBase() + { + ImageCompressor = GetRequiredService(); + ImageResizer = GetRequiredService(); + } +} + + +public class MagickNetImageCompressor_Tests : AbpImagingMagickNetProviderTestBase +{ + [Fact] + public async Task Should_Compress_Jpg() + { + await using var jpegImage = ImageFileHelper.GetJpgTestFileStream(); + var compressedImage = await ImageCompressor.CompressAsync(jpegImage); + + compressedImage.ShouldNotBeNull(); + compressedImage.State.ShouldBe(ProcessState.Done); + compressedImage.Result.Length.ShouldBeLessThan(jpegImage.Length); + + compressedImage.Result.Dispose(); + } + + [Fact] + public async Task Should_Compress_Png() + { + await using var pngImage = ImageFileHelper.GetPngTestFileStream(); + var compressedImage = await ImageCompressor.CompressAsync(pngImage); + + compressedImage.ShouldNotBeNull(); + compressedImage.State.ShouldBe(ProcessState.Done); + compressedImage.Result.Length.ShouldBeLessThan(pngImage.Length); + + compressedImage.Result.Dispose(); + } + + [Fact] + public async Task Should_Compress_Webp() + { + await using var webpImage = ImageFileHelper.GetWebpTestFileStream(); + var compressedImage = await ImageCompressor.CompressAsync(webpImage); + + compressedImage.ShouldNotBeNull(); + compressedImage.State.ShouldBe(ProcessState.Unsupported); + compressedImage.Result.ShouldBe(webpImage); + } + + [Fact] + public async Task Should_Compress_Stream_And_Byte_Array_The_Same() + { + await using var jpegImage = ImageFileHelper.GetJpgTestFileStream(); + var compressedImage1 = await ImageCompressor.CompressAsync(jpegImage); + var compressedImage2 = await ImageCompressor.CompressAsync(await jpegImage.GetAllBytesAsync()); + + compressedImage1.ShouldNotBeNull(); + compressedImage1.State.ShouldBe(ProcessState.Done); + compressedImage1.Result.Length.ShouldBeLessThan(jpegImage.Length); + + compressedImage2.ShouldNotBeNull(); + compressedImage2.State.ShouldBe(ProcessState.Done); + compressedImage2.Result.LongLength.ShouldBeLessThan(jpegImage.Length); + + compressedImage1.Result.Length.ShouldBe(compressedImage2.Result.LongLength); + + compressedImage1.Result.Dispose(); + } +} + +public class MagickNetImageResizer_Tests : AbpImagingMagickNetProviderTestBase +{ + [Fact] + public async Task Should_Resize_Jpg() + { + await using var jpegImage = ImageFileHelper.GetJpgTestFileStream(); + var resizedImage = await ImageResizer.ResizeAsync(jpegImage, new ImageResizeArgs(100, 100)); + + resizedImage.ShouldNotBeNull(); + resizedImage.State.ShouldBe(ProcessState.Done); + resizedImage.Result.Length.ShouldBeLessThan(jpegImage.Length); + + resizedImage.Result.Dispose(); + } + + [Fact] + public async Task Should_Resize_Png() + { + await using var pngImage = ImageFileHelper.GetPngTestFileStream(); + var resizedImage = await ImageResizer.ResizeAsync(pngImage, new ImageResizeArgs(100, 100)); + + resizedImage.ShouldNotBeNull(); + resizedImage.State.ShouldBe(ProcessState.Done); + resizedImage.Result.Length.ShouldBeLessThan(pngImage.Length); + + resizedImage.Result.Dispose(); + } + + [Fact] + public async Task Should_Resize_Webp() + { + await using var webpImage = ImageFileHelper.GetWebpTestFileStream(); + var resizedImage = await ImageResizer.ResizeAsync(webpImage, new ImageResizeArgs(100, 100)); + + resizedImage.ShouldNotBeNull(); + resizedImage.State.ShouldBe(ProcessState.Done); + resizedImage.Result.Length.ShouldBeLessThan(webpImage.Length); + + resizedImage.Result.Dispose(); + } + + [Fact] + public async Task Should_Resize_Stream_And_Byte_Array_The_Same() + { + await using var jpegImage = ImageFileHelper.GetJpgTestFileStream(); + var resizedImage1 = await ImageResizer.ResizeAsync(jpegImage, new ImageResizeArgs(100, 100)); + var resizedImage2 = await ImageResizer.ResizeAsync(await jpegImage.GetAllBytesAsync(), new ImageResizeArgs(100, 100)); + + resizedImage1.ShouldNotBeNull(); + resizedImage1.State.ShouldBe(ProcessState.Done); + resizedImage1.Result.Length.ShouldBeLessThan(jpegImage.Length); + + resizedImage2.ShouldNotBeNull(); + resizedImage2.State.ShouldBe(ProcessState.Done); + resizedImage2.Result.LongLength.ShouldBeLessThan(jpegImage.Length); + + resizedImage1.Result.Length.ShouldBe(resizedImage2.Result.LongLength); + + resizedImage1.Result.Dispose(); + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestBase.cs b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestBase.cs new file mode 100644 index 0000000000..6fae4cd4e3 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestBase.cs @@ -0,0 +1,11 @@ +using Volo.Abp.Testing; + +namespace Volo.Abp.Imaging; + +public abstract class AbpImagingMagickNetTestBase : AbpIntegratedTest +{ + protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) + { + options.UseAutofac(); + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestModule.cs b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestModule.cs new file mode 100644 index 0000000000..31d76dce6f --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestModule.cs @@ -0,0 +1,14 @@ +using Volo.Abp.Autofac; +using Volo.Abp.Modularity; + +namespace Volo.Abp.Imaging; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(AbpImagingMagickNetModule), + typeof(AbpTestBaseModule) +)] +public class AbpImagingMagickNetTestModule : AbpModule +{ + +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.jpg b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.jpg new file mode 100644 index 0000000000..16415cc706 Binary files /dev/null and b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.jpg differ diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.png b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.png new file mode 100644 index 0000000000..ae70d5cbc8 Binary files /dev/null and b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.png differ diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.webp b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.webp new file mode 100644 index 0000000000..377861d583 Binary files /dev/null and b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.webp differ diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/ImageFileHelper.cs b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/ImageFileHelper.cs new file mode 100644 index 0000000000..de249fb2e5 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/ImageFileHelper.cs @@ -0,0 +1,34 @@ +using System; +using System.IO; + +namespace Volo.Abp.Imaging; + +public static class ImageFileHelper +{ + public static Stream GetJpgTestFileStream() + { + return GetTestFileStream("abp.jpg"); + } + + public static Stream GetPngTestFileStream() + { + return GetTestFileStream("abp.png"); + } + + public static Stream GetWebpTestFileStream() + { + return GetTestFileStream("abp.webp"); + } + + private static Stream GetTestFileStream(string fileName) + { + var assembly = typeof(ImageFileHelper).Assembly; + var resourceStream = assembly.GetManifestResourceStream("Volo.Abp.Imaging.Files." + fileName); + if (resourceStream == null) + { + throw new Exception($"File {fileName} does not exists!"); + } + + return resourceStream; + } +} \ No newline at end of file