Skip to content

Commit 420ccee

Browse files
committed
添加图片文件优化单元测试
1 parent 2a263e6 commit 420ccee

3 files changed

Lines changed: 92 additions & 1 deletion

File tree

Binary file not shown.

src/MediaConverters/MediaConverters.Tests/Framework/TestHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public static void AssemblyInit(TestContext context)
1717
WorkingDirectory = Directory.CreateDirectory(Path.Join(context.TestRunDirectory, "Working"));
1818
}
1919

20-
private static DirectoryInfo WorkingDirectory { get; set; } = null!;
20+
public static DirectoryInfo WorkingDirectory { get; set; } = null!;
2121

2222
public static FileInfo SaveAsTestImageFile(this Image<Rgba32> image)
2323
{
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
using DotNetCampus.MediaConverters.Imaging.Optimizations;
2+
3+
using SixLabors.ImageSharp;
4+
5+
namespace DotNetCampus.MediaConverters.Tests.Imaging.Optimizations;
6+
7+
[TestClass()]
8+
public class ImageFileOptimizationTests
9+
{
10+
[TestMethod()]
11+
public async Task OptimizeImageFileAsyncTest1()
12+
{
13+
var file = TestFileProvider.GetTestFile(TestFileProvider.DefaultTestImageName);
14+
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(file, TestHelper.WorkingDirectory, 100, null);
15+
16+
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
17+
}
18+
19+
[TestMethod("传入不存在的图片文件,可以返回文件不存在,优化失败")]
20+
public async Task OptimizeImageFileAsyncTest2()
21+
{
22+
var file = new FileInfo("The Not Exists Image File.png");
23+
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(file, TestHelper.WorkingDirectory, 100, null);
24+
25+
Assert.AreEqual(false, imageFileOptimizationResult.IsSuccess);
26+
Assert.AreEqual(ImageFileOptimizationFailureReason.FileNotFound, imageFileOptimizationResult.FailureReason);
27+
}
28+
29+
[TestMethod()]
30+
public async Task OptimizeImageFileAsyncTest_LimitSize1()
31+
{
32+
var file = TestFileProvider.GetTestFile(TestFileProvider.DefaultTestImageName);
33+
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(file, TestHelper.WorkingDirectory, 100, 100);
34+
// 预期此时通过面积限制,依然宽度高度超过了限制的最大宽度高度
35+
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
36+
ImageInfo imageInfo = await Image.IdentifyAsync(imageFileOptimizationResult.OptimizedImageFile!.FullName);
37+
Assert.AreEqual(true, imageInfo.Width > 100);
38+
Assert.AreEqual(true, imageInfo.Width * imageInfo.Height < 100 * 100);
39+
}
40+
41+
[TestMethod()]
42+
public async Task OptimizeImageFileAsyncTest_LimitSize2()
43+
{
44+
var file = TestFileProvider.GetTestFile(TestFileProvider.DefaultTestImageName);
45+
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(file, TestHelper.WorkingDirectory, 100, 100, useAreaSizeLimit: false);
46+
// 不通过面积限制,宽度高度绝对都不超过限制的最大宽度高度
47+
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
48+
ImageInfo imageInfo = await Image.IdentifyAsync(imageFileOptimizationResult.OptimizedImageFile!.FullName);
49+
Assert.AreEqual(true, imageInfo.Width <= 100);
50+
Assert.AreEqual(true, imageInfo.Height <= 100);
51+
}
52+
53+
[TestMethod()]
54+
public async Task OptimizeImageFileAsyncTest_LimitSize3()
55+
{
56+
var file = TestFileProvider.GetTestFile(TestFileProvider.DefaultTestImageName);
57+
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(file, TestHelper.WorkingDirectory, 600, 20, useAreaSizeLimit: false);
58+
59+
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
60+
ImageInfo imageInfo = await Image.IdentifyAsync(imageFileOptimizationResult.OptimizedImageFile!.FullName);
61+
Assert.AreEqual(true, imageInfo.Width <= 600);
62+
Assert.AreEqual(true, imageInfo.Height <= 20);
63+
}
64+
65+
[TestMethod()]
66+
public async Task OptimizeImageFileAsyncTest_FormatTiff()
67+
{
68+
var file = TestFileProvider.GetTestFile("file_example_TIFF_1MB.tiff");
69+
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(file, TestHelper.WorkingDirectory);
70+
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
71+
TestHelper.OpenFileInExplorer(imageFileOptimizationResult.OptimizedImageFile!);
72+
}
73+
74+
[TestMethod()]
75+
public async Task OptimizeImageFileAsyncTest_FormatWebp()
76+
{
77+
var file = TestFileProvider.GetTestFile("file_example_WEBP_50kB.webp");
78+
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(file, TestHelper.WorkingDirectory);
79+
Assert.AreEqual(true, imageFileOptimizationResult.IsSuccess);
80+
TestHelper.OpenFileInExplorer(imageFileOptimizationResult.OptimizedImageFile!);
81+
}
82+
83+
[TestMethod()]
84+
public async Task OptimizeImageFileAsyncTest_FormatWmf()
85+
{
86+
var file = TestFileProvider.GetTestFile("sample.wmf");
87+
var imageFileOptimizationResult = await ImageFileOptimization.OptimizeImageFileAsync(file, TestHelper.WorkingDirectory);
88+
Assert.AreEqual(false, imageFileOptimizationResult.IsSuccess);
89+
Assert.AreEqual(ImageFileOptimizationFailureReason.UnknownImageFormat, imageFileOptimizationResult.FailureReason);
90+
}
91+
}

0 commit comments

Comments
 (0)