-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
ArtQRCodeRendererTests.cs
106 lines (89 loc) · 4 KB
/
ArtQRCodeRendererTests.cs
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
101
102
103
104
105
106
#if SYSTEM_DRAWING
using Xunit;
using QRCoder;
using Shouldly;
using System.Drawing;
using QRCoderTests.Helpers.XUnitExtenstions;
using QRCoderTests.Helpers;
namespace QRCoderTests
{
public class ArtQRCodeRendererTests
{
[Fact]
[Category("QRRenderer/ArtQRCode")]
public void can_create_standard_qrcode_graphic()
{
var gen = new QRCodeGenerator();
var data = gen.CreateQrCode("This is a quick test! 123#?", QRCodeGenerator.ECCLevel.H);
var bmp = new ArtQRCode(data).GetGraphic(10);
var result = HelperFunctions.BitmapToHash(bmp);
result.ShouldBe("df510ce9feddc0dd8c23c54e700abbf0");
}
[Fact]
[Category("QRRenderer/ArtQRCode")]
public void can_create_standard_qrcode_graphic_with_custom_finder()
{
var gen = new QRCodeGenerator();
var data = gen.CreateQrCode("This is a quick test! 123#?", QRCodeGenerator.ECCLevel.H);
var finder = new Bitmap(70, 70);
using (var g = Graphics.FromImage(finder))
{
g.FillRectangle(Brushes.Red, 0, 0, 70, 70);
}
var bmp = new ArtQRCode(data).GetGraphic(10, Color.Black, Color.White, Color.Transparent, finderPatternImage: finder);
var result = HelperFunctions.BitmapToHash(bmp);
result.ShouldBe("e28a3779b9b975b85984e36f596c9a35");
}
[Fact]
[Category("QRRenderer/ArtQRCode")]
public void can_create_standard_qrcode_graphic_without_quietzone()
{
var gen = new QRCodeGenerator();
var data = gen.CreateQrCode("This is a quick test! 123#?", QRCodeGenerator.ECCLevel.H);
var bmp = new ArtQRCode(data).GetGraphic(10, Color.Black, Color.White, Color.Transparent, drawQuietZones: false);
var result = HelperFunctions.BitmapToHash(bmp);
result.ShouldBe("54408da26852d6c67ab7cad2656da7fa");
}
[Fact]
[Category("QRRenderer/ArtQRCode")]
public void can_create_standard_qrcode_graphic_with_background()
{
var gen = new QRCodeGenerator();
var data = gen.CreateQrCode("This is a quick test! 123#?", QRCodeGenerator.ECCLevel.H);
var bmp = new ArtQRCode(data).GetGraphic((Bitmap)Image.FromFile(HelperFunctions.GetAssemblyPath() + "\\assets\\noun_software engineer_2909346.png"));
//Used logo is licensed under public domain. Ref.: https://thenounproject.com/Iconathon1/collection/redefining-women/?i=2909346
var result = HelperFunctions.BitmapToHash(bmp);
result.ShouldBe("7f039ccde219ae78e4f768466376a17f");
}
[Fact]
[Category("QRRenderer/ArtQRCode")]
public void should_throw_pixelfactor_oor_exception()
{
var gen = new QRCodeGenerator();
var data = gen.CreateQrCode("This is a quick test! 123#?", QRCodeGenerator.ECCLevel.H);
var aCode = new ArtQRCode(data);
var exception = Record.Exception(() => aCode.GetGraphic(10, Color.Black, Color.White, Color.Transparent, pixelSizeFactor: 2));
Assert.NotNull(exception);
Assert.IsType<System.Exception>(exception);
exception.Message.ShouldBe("The parameter pixelSize must be between 0 and 1. (0-100%)");
}
[Fact]
[Category("QRRenderer/ArtQRCode")]
public void can_instantate_parameterless()
{
var artCode = new ArtQRCode();
artCode.ShouldNotBeNull();
artCode.ShouldBeOfType<ArtQRCode>();
}
[Fact]
[Category("QRRenderer/ArtQRCode")]
public void can_render_artqrcode_from_helper()
{
//Create QR code
var bmp = ArtQRCodeHelper.GetQRCode("A", 10, Color.Black, Color.White, Color.Transparent, QRCodeGenerator.ECCLevel.L);
var result = HelperFunctions.BitmapToHash(bmp);
result.ShouldBe("a1975852df9b537344468bd44d54abe0");
}
}
}
#endif