-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathImageResizeShould.cs
More file actions
100 lines (87 loc) · 3.13 KB
/
ImageResizeShould.cs
File metadata and controls
100 lines (87 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using Microsoft.Azure.WebJobs.Host;
using Moq;
using Shouldly;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats;
using Xunit;
namespace AllReady.Processing.UnitTest
{
public class ImageResizeShould
{
private const string BlobName = "/container/image.png";
private readonly TraceWriter _log = new Mock<TraceWriter>(TraceLevel.Verbose).Object;
public ImageResizeShould()
{
Environment.SetEnvironmentVariable("maxDimension", "400");
}
[Fact]
public void Not_resize_an_image_within_maxDimensions_in_both_directions()
{
using (var src = ImageHelpers.GetImageStream(400, 400))
using (var result = new MemoryStream())
{
ImageResize.Run(src, BlobName, result, _log);
result.Seek(0, SeekOrigin.Begin);
result.ReadByte().ShouldBe(-1);
}
}
[Fact]
public void Resize_an_image_with_width_larger_than_maxDimensions()
{
using (var src = ImageHelpers.GetImageStream(700, 400))
using (var result = new MemoryStream())
{
ImageResize.Run(src, BlobName, result, _log);
result.Seek(0, SeekOrigin.Begin);
result.ShouldBeImageWithDimensions(400, 228);
}
}
[Fact]
public void Resize_an_image_with_height_larger_than_maxDimensions()
{
using (var src = ImageHelpers.GetImageStream(250, 500))
using (var result = new MemoryStream())
{
ImageResize.Run(src, BlobName, result, _log);
result.Seek(0, SeekOrigin.Begin);
result.ShouldBeImageWithDimensions(200, 400);
}
}
[Fact]
public void Resize_an_image_with_both_dimensions_larger_than_maxDimensions()
{
using (var src = ImageHelpers.GetImageStream(500, 650))
using (var result = new MemoryStream())
{
ImageResize.Run(src, BlobName, result, _log);
result.Seek(0, SeekOrigin.Begin);
result.ShouldBeImageWithDimensions(307, 400);
}
}
public static readonly IEnumerable<object[]> TestImageFormats =
new[]
{
new object[] {ImageFormats.Png},
new object[] {ImageFormats.Gif},
new object[] {ImageFormats.Bmp},
new object[] {ImageFormats.Jpeg}
};
[Theory]
[MemberData(nameof(TestImageFormats))]
public void Maintain_the_same_image_format_when_resizing(IImageFormat expected)
{
using (var src = ImageHelpers.GetImageStream(500, 650, expected))
using (var result = new MemoryStream())
{
ImageResize.Run(src, BlobName, result, _log);
result.Seek(0, SeekOrigin.Begin);
var format = Image.DetectFormat(result);
format.ShouldBe(format);
}
}
}
}