diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index dbc6cfe67a..1cf8068de2 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -447,7 +447,13 @@ 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}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Imaging.Abstractions.Tests", "test\Volo.Abp.Imaging.Abstractions.Tests\Volo.Abp.Imaging.Abstractions.Tests.csproj", "{2BE6BDC7-A9A3-4E30-9099-A9EF4813F6FF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Imaging.ImageSharp.Tests", "test\Volo.Abp.Imaging.ImageSharp.Tests\Volo.Abp.Imaging.ImageSharp.Tests.csproj", "{1E161A34-10C1-46FA-9EFD-10DD0858A8F5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Imaging.MagickNet.Tests", "test\Volo.Abp.Imaging.MagickNet.Tests\Volo.Abp.Imaging.MagickNet.Tests.csproj", "{62B2B8C9-8F24-4D31-894F-C1F0728D32AB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Imaging.AspNetCore.Tests", "test\Volo.Abp.Imaging.AspNetCore.Tests\Volo.Abp.Imaging.AspNetCore.Tests.csproj", "{983B0136-384B-4439-B374-31111FFAA286}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -1339,6 +1345,18 @@ Global {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 + {1E161A34-10C1-46FA-9EFD-10DD0858A8F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1E161A34-10C1-46FA-9EFD-10DD0858A8F5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1E161A34-10C1-46FA-9EFD-10DD0858A8F5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1E161A34-10C1-46FA-9EFD-10DD0858A8F5}.Release|Any CPU.Build.0 = Release|Any CPU + {62B2B8C9-8F24-4D31-894F-C1F0728D32AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62B2B8C9-8F24-4D31-894F-C1F0728D32AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62B2B8C9-8F24-4D31-894F-C1F0728D32AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62B2B8C9-8F24-4D31-894F-C1F0728D32AB}.Release|Any CPU.Build.0 = Release|Any CPU + {983B0136-384B-4439-B374-31111FFAA286}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {983B0136-384B-4439-B374-31111FFAA286}.Debug|Any CPU.Build.0 = Debug|Any CPU + {983B0136-384B-4439-B374-31111FFAA286}.Release|Any CPU.ActiveCfg = Release|Any CPU + {983B0136-384B-4439-B374-31111FFAA286}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1565,6 +1583,9 @@ Global {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} + {1E161A34-10C1-46FA-9EFD-10DD0858A8F5} = {447C8A77-E5F0-4538-8687-7383196D04EA} + {62B2B8C9-8F24-4D31-894F-C1F0728D32AB} = {447C8A77-E5F0-4538-8687-7383196D04EA} + {983B0136-384B-4439-B374-31111FFAA286} = {447C8A77-E5F0-4538-8687-7383196D04EA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/src/Volo.Abp.Imaging.AspNetCore/Volo/Abp/Imaging/CompressImageAttribute.cs b/framework/src/Volo.Abp.Imaging.AspNetCore/Volo/Abp/Imaging/CompressImageAttribute.cs index 9e091288bc..4563d4976e 100644 --- a/framework/src/Volo.Abp.Imaging.AspNetCore/Volo/Abp/Imaging/CompressImageAttribute.cs +++ b/framework/src/Volo.Abp.Imaging.AspNetCore/Volo/Abp/Imaging/CompressImageAttribute.cs @@ -47,7 +47,7 @@ public class CompressImageAttribute : ActionFilterAttribute protected virtual async Task CompressImageAsync(IFormFile file, IImageCompressor imageCompressor) { - if(file.ContentType == null || !file.ContentType.StartsWith("image/")) + if(file.Headers == null || file.ContentType == null || !file.ContentType.StartsWith("image/")) { return file; } diff --git a/framework/src/Volo.Abp.Imaging.AspNetCore/Volo/Abp/Imaging/ResizeImageAttribute.cs b/framework/src/Volo.Abp.Imaging.AspNetCore/Volo/Abp/Imaging/ResizeImageAttribute.cs index 0043c45238..a6708b97bf 100644 --- a/framework/src/Volo.Abp.Imaging.AspNetCore/Volo/Abp/Imaging/ResizeImageAttribute.cs +++ b/framework/src/Volo.Abp.Imaging.AspNetCore/Volo/Abp/Imaging/ResizeImageAttribute.cs @@ -60,7 +60,7 @@ public class ResizeImageAttribute : ActionFilterAttribute protected virtual async Task ResizeImageAsync(IFormFile file, IImageResizer imageResizer) { - if(file.ContentType == null || !file.ContentType.StartsWith("image/")) + if(file.Headers == null || file.ContentType == null || !file.ContentType.StartsWith("image/")) { return file; } diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo.Abp.Imaging.Abstractions.Tests.abppkg.json b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo.Abp.Imaging.Abstractions.Tests.abppkg.json similarity index 100% rename from framework/test/Volo.Abp.Imaging.Tests/Volo.Abp.Imaging.Abstractions.Tests.abppkg.json rename to framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo.Abp.Imaging.Abstractions.Tests.abppkg.json diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo.Abp.Imaging.Tests.csproj b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo.Abp.Imaging.Abstractions.Tests.csproj similarity index 76% rename from framework/test/Volo.Abp.Imaging.Tests/Volo.Abp.Imaging.Tests.csproj rename to framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo.Abp.Imaging.Abstractions.Tests.csproj index 4b84199ec8..153083a724 100644 --- a/framework/test/Volo.Abp.Imaging.Tests/Volo.Abp.Imaging.Tests.csproj +++ b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo.Abp.Imaging.Abstractions.Tests.csproj @@ -11,8 +11,6 @@ - - diff --git a/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestBase.cs b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestBase.cs new file mode 100644 index 0000000000..99637eb1f9 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestBase.cs @@ -0,0 +1,11 @@ +using Volo.Abp.Testing; + +namespace Volo.Abp.Imaging; + +public abstract class AbpImagingAbstractionsTestBase : 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/AbpImagingAbstractionsTestModule.cs b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestModule.cs similarity index 100% rename from framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestModule.cs rename to framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestModule.cs diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.jpg b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/Files/abp.jpg similarity index 100% rename from framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.jpg rename to framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/Files/abp.jpg diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.png b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/Files/abp.png similarity index 100% rename from framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.png rename to framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/Files/abp.png diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.webp b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/Files/abp.webp similarity index 100% rename from framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/Files/abp.webp rename to framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/Files/abp.webp diff --git a/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/IImageCompressor_Tests.cs b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/IImageCompressor_Tests.cs new file mode 100644 index 0000000000..ccba3fe7dd --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/IImageCompressor_Tests.cs @@ -0,0 +1,51 @@ +using System.Threading.Tasks; +using Shouldly; +using Xunit; + +namespace Volo.Abp.Imaging; + +public class IImageCompressor_Tests : AbpImagingAbstractionsTestBase +{ + protected IImageCompressor ImageCompressor { get; } + + public IImageCompressor_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.Abstractions.Tests/Volo/Abp/Imaging/IImageResizer_Tests.cs b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/IImageResizer_Tests.cs new file mode 100644 index 0000000000..ff5b4c3082 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/IImageResizer_Tests.cs @@ -0,0 +1,50 @@ +using System.Threading.Tasks; +using Shouldly; +using Xunit; + +namespace Volo.Abp.Imaging; + +public class IImageResizer_Tests : AbpImagingAbstractionsTestBase +{ + protected IImageResizer ImageResizer { get; } + + public IImageResizer_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); + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/ImageFileHelper.cs b/framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/ImageFileHelper.cs similarity index 100% rename from framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/ImageFileHelper.cs rename to framework/test/Volo.Abp.Imaging.Abstractions.Tests/Volo/Abp/Imaging/ImageFileHelper.cs diff --git a/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo.Abp.Imaging.AspNetCore.Tests.abppkg.json b/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo.Abp.Imaging.AspNetCore.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo.Abp.Imaging.AspNetCore.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo.Abp.Imaging.AspNetCore.Tests.csproj b/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo.Abp.Imaging.AspNetCore.Tests.csproj new file mode 100644 index 0000000000..7e20c9cdff --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo.Abp.Imaging.AspNetCore.Tests.csproj @@ -0,0 +1,15 @@ + + + + + + net7.0 + + + + + + + + + diff --git a/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo/Abp/Imaging/AbpImagingAspNetCoreTestBase.cs b/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo/Abp/Imaging/AbpImagingAspNetCoreTestBase.cs new file mode 100644 index 0000000000..270cb0f974 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo/Abp/Imaging/AbpImagingAspNetCoreTestBase.cs @@ -0,0 +1,11 @@ +using Volo.Abp.Testing; + +namespace Volo.Abp.Imaging; + +public abstract class AbpImagingAspNetCoreTestBase : AbpIntegratedTest +{ + protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) + { + options.UseAutofac(); + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo/Abp/Imaging/AbpImagingAspNetCoreTestModule.cs b/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo/Abp/Imaging/AbpImagingAspNetCoreTestModule.cs new file mode 100644 index 0000000000..f41749244b --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo/Abp/Imaging/AbpImagingAspNetCoreTestModule.cs @@ -0,0 +1,14 @@ +using Volo.Abp.Autofac; +using Volo.Abp.Modularity; + +namespace Volo.Abp.Imaging; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(AbpImagingAspNetCoreModule), + typeof(AbpTestBaseModule) +)] +public class AbpImagingAspNetCoreTestModule : AbpModule +{ + +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo/Abp/Imaging/CompressImageAttribute_Tests.cs b/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo/Abp/Imaging/CompressImageAttribute_Tests.cs new file mode 100644 index 0000000000..5275e88e30 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo/Abp/Imaging/CompressImageAttribute_Tests.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Controllers; +using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.Extensions.DependencyInjection; +using Shouldly; +using Xunit; + +namespace Volo.Abp.Imaging; + +public class CompressImageAttribute_Tests : AbpImagingAspNetCoreTestBase +{ + [Fact] + public async Task Should_Compressed_IFormFile() + { + var attribute = new CompressImageAttribute(); + + var serviceScopeFactory = GetRequiredService(); + + await using var stream = ImageFileHelper.GetJpgTestFileStream(); + + var actionExecutingContext = new ActionExecutingContext( + new ActionContext() { + HttpContext = new DefaultHttpContext() { + ServiceScopeFactory = serviceScopeFactory + }, + RouteData = new Microsoft.AspNetCore.Routing.RouteData(), + ActionDescriptor = new ControllerActionDescriptor(), + }, + new List(), + new Dictionary + { + {"file", new FormFile(stream, 0, stream.Length, "file", "test.jpg") { + Headers = new HeaderDictionary(), + ContentType = "image/jpeg" + }} + }, + new object() + ); + + await attribute.OnActionExecutionAsync(actionExecutingContext, async () => await Task.FromResult(new ActionExecutedContext( + actionExecutingContext, + new List(), + new object() + ))); + + actionExecutingContext.ActionArguments["file"].ShouldNotBeNull(); + actionExecutingContext.ActionArguments["file"].ShouldBeAssignableTo(); + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo/Abp/Imaging/ResizeImageAttribute_Tests.cs b/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo/Abp/Imaging/ResizeImageAttribute_Tests.cs new file mode 100644 index 0000000000..ea21306d1d --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.AspNetCore.Tests/Volo/Abp/Imaging/ResizeImageAttribute_Tests.cs @@ -0,0 +1,60 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Controllers; +using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.Extensions.DependencyInjection; +using Shouldly; +using Xunit; + +namespace Volo.Abp.Imaging; + +public class ResizeImageAttribute_Tests : AbpImagingAspNetCoreTestBase +{ + [Fact] + public void Should_Init() + { + var attribute = new ResizeImageAttribute(100, 100); + + attribute.Width.ShouldBe(100); + attribute.Height.ShouldBe(100); + } + + [Fact] + public async Task Should_Resized_IFormFile() + { + var attribute = new ResizeImageAttribute(100, 100); + + var serviceScopeFactory = GetRequiredService(); + await using var stream = ImageFileHelper.GetJpgTestFileStream(); + + var actionExecutingContext = new ActionExecutingContext( + new ActionContext() { + HttpContext = new DefaultHttpContext() { + ServiceScopeFactory = serviceScopeFactory + }, + RouteData = new Microsoft.AspNetCore.Routing.RouteData(), + ActionDescriptor = new ControllerActionDescriptor(), + }, + new List(), + new Dictionary + { + {"file", new FormFile(stream, 0, stream.Length, "file", "test.jpg") { + Headers = new HeaderDictionary(), + ContentType = "image/jpeg" + }} + }, + new object() + ); + + await attribute.OnActionExecutionAsync(actionExecutingContext, async () => await Task.FromResult(new ActionExecutedContext( + actionExecutingContext, + new List(), + new object() + ))); + + actionExecutingContext.ActionArguments["file"].ShouldNotBeNull(); + actionExecutingContext.ActionArguments["file"].ShouldBeAssignableTo(); + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo.Abp.Imaging.ImageSharp.Tests.abppkg.json b/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo.Abp.Imaging.ImageSharp.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo.Abp.Imaging.ImageSharp.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo.Abp.Imaging.ImageSharp.Tests.csproj b/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo.Abp.Imaging.ImageSharp.Tests.csproj new file mode 100644 index 0000000000..1c9193706a --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo.Abp.Imaging.ImageSharp.Tests.csproj @@ -0,0 +1,16 @@ + + + + + + net7.0 + + + + + + + + + + diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestBase.cs b/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestBase.cs similarity index 100% rename from framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestBase.cs rename to framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestBase.cs diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestModule.cs b/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestModule.cs similarity index 100% rename from framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestModule.cs rename to framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo/Abp/Imaging/AbpImagingImageSharpTestModule.cs diff --git a/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo/Abp/Imaging/ImageSharpImageCompressor_Tests.cs b/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo/Abp/Imaging/ImageSharpImageCompressor_Tests.cs new file mode 100644 index 0000000000..4df4cd2a61 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo/Abp/Imaging/ImageSharpImageCompressor_Tests.cs @@ -0,0 +1,79 @@ +using System.IO; +using System.Threading.Tasks; +using Shouldly; +using Xunit; + +namespace Volo.Abp.Imaging; + +public class ImageSharpImageCompressor_Tests : AbpImagingImageSharpTestBase +{ + public IImageCompressor ImageCompressor { get; } + public ImageSharpImageCompressor_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.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(); + + if (compressedImage.State == ProcessState.Done) + { + compressedImage.Result.Length.ShouldBeLessThan(pngImage.Length); + }else + { + compressedImage.Result.Length.ShouldBe(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(); + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo/Abp/Imaging/ImageSharpImageResizer_Tests.cs b/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo/Abp/Imaging/ImageSharpImageResizer_Tests.cs new file mode 100644 index 0000000000..650c80ce3b --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.ImageSharp.Tests/Volo/Abp/Imaging/ImageSharpImageResizer_Tests.cs @@ -0,0 +1,72 @@ +using System.IO; +using System.Threading.Tasks; +using Shouldly; +using Xunit; + +namespace Volo.Abp.Imaging; + +public class ImageSharpImageResizer_Tests : AbpImagingImageSharpTestBase +{ + public IImageResizer ImageResizer { get; } + + public ImageSharpImageResizer_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.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.MagickNet.Tests/Volo.Abp.Imaging.MagickNet.Tests.abppkg.json b/framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo.Abp.Imaging.MagickNet.Tests.abppkg.json new file mode 100644 index 0000000000..a686451fbc --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo.Abp.Imaging.MagickNet.Tests.abppkg.json @@ -0,0 +1,3 @@ +{ + "role": "lib.test" +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo.Abp.Imaging.MagickNet.Tests.csproj b/framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo.Abp.Imaging.MagickNet.Tests.csproj new file mode 100644 index 0000000000..b1842aad15 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo.Abp.Imaging.MagickNet.Tests.csproj @@ -0,0 +1,19 @@ + + + + + + net7.0 + + + + + + + + + + + + + diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestBase.cs b/framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestBase.cs similarity index 100% rename from framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestBase.cs rename to framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestBase.cs diff --git a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestModule.cs b/framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestModule.cs similarity index 100% rename from framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestModule.cs rename to framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo/Abp/Imaging/AbpImagingMagickNetTestModule.cs diff --git a/framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo/Abp/Imaging/MagickNetImageCompressor_Tests.cs b/framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo/Abp/Imaging/MagickNetImageCompressor_Tests.cs new file mode 100644 index 0000000000..eab63b49f3 --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo/Abp/Imaging/MagickNetImageCompressor_Tests.cs @@ -0,0 +1,73 @@ +using System.IO; +using System.Threading.Tasks; +using Shouldly; +using Xunit; + +namespace Volo.Abp.Imaging; + +public class MagickNetImageCompressor_Tests : AbpImagingMagickNetTestBase +{ + public IImageCompressor ImageCompressor { get; } + + public MagickNetImageCompressor_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.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(); + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo/Abp/Imaging/MagickNetImageResizer_Tests.cs b/framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo/Abp/Imaging/MagickNetImageResizer_Tests.cs new file mode 100644 index 0000000000..870c61d0ab --- /dev/null +++ b/framework/test/Volo.Abp.Imaging.MagickNet.Tests/Volo/Abp/Imaging/MagickNetImageResizer_Tests.cs @@ -0,0 +1,75 @@ +using System.IO; +using System.Threading.Tasks; +using Shouldly; +using Xunit; + +namespace Volo.Abp.Imaging; + +public class MagickNetImageResizer_Tests : AbpImagingMagickNetTestBase +{ + public IImageResizer ImageResizer { get; } + + public MagickNetImageResizer_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.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/AbpImagingAbstractionsTestBase.cs b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestBase.cs deleted file mode 100644 index 6ba84ac482..0000000000 --- a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingAbstractionsTestBase.cs +++ /dev/null @@ -1,105 +0,0 @@ -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/AbpImagingImageSharpProviderTestBase.cs b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpProviderTestBase.cs deleted file mode 100644 index 14f0857d38..0000000000 --- a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingImageSharpProviderTestBase.cs +++ /dev/null @@ -1,139 +0,0 @@ -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/AbpImagingMagickNetProviderTestBase.cs b/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetProviderTestBase.cs deleted file mode 100644 index b28ee86fff..0000000000 --- a/framework/test/Volo.Abp.Imaging.Tests/Volo/Abp/Imaging/AbpImagingMagickNetProviderTestBase.cs +++ /dev/null @@ -1,141 +0,0 @@ -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