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