Skip to content

Commit cd3c82a

Browse files
committed
Added testcases for QR codes with logos/icons
1 parent f6701c1 commit cd3c82a

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

QRCoderTests/QRCodeRendererTests.cs

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
using QRCoderTests.XUnitExtenstions;
66
using System.IO;
77
using System.Security.Cryptography;
8+
#if !NETCOREAPP1_1
9+
using System.Drawing;
10+
#endif
811

912
namespace QRCoderTests
1013
{
@@ -30,6 +33,62 @@ public void can_create_standard_qrcode_graphic()
3033

3134
result.ShouldBe("41d3313c10d84034d67d476eec04163f");
3235
}
36+
37+
[Fact]
38+
[Category("QRRenderer/QRCode")]
39+
public void can_create_qrcode_with_transparent_logo_graphic()
40+
{
41+
//Create dummy logo
42+
var logo = new Bitmap(32, 32);
43+
var gfx = Graphics.FromImage(logo);
44+
gfx.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
45+
gfx.FillRectangle(Brushes.Transparent, new Rectangle(0, 0, 32, 32));
46+
gfx.FillEllipse(Brushes.Red, new Rectangle(0, 0, 32, 32));
47+
gfx.Save();
48+
49+
//Create QR code
50+
var gen = new QRCodeGenerator();
51+
var data = gen.CreateQrCode("This is a quick test! 123#?", QRCodeGenerator.ECCLevel.H);
52+
var bmp = new QRCode(data).GetGraphic(10, Color.Black, Color.Transparent, icon: logo);
53+
54+
var ms = new MemoryStream();
55+
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
56+
var imgBytes = ms.ToArray();
57+
var md5 = new MD5CryptoServiceProvider();
58+
var hash = md5.ComputeHash(imgBytes);
59+
var result = BitConverter.ToString(hash).Replace("-", "").ToLower();
60+
ms.Dispose();
61+
62+
result.ShouldBe("8f03d2c3fc5998cebb46658c3e6293b1");
63+
}
64+
65+
[Fact]
66+
[Category("QRRenderer/QRCode")]
67+
public void can_create_qrcode_with_non_transparent_logo_graphic()
68+
{
69+
//Create dummy logo
70+
var logo = new Bitmap(32, 32);
71+
var gfx = Graphics.FromImage(logo);
72+
gfx.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
73+
gfx.FillRectangle(Brushes.White, new Rectangle(0, 0, 32, 32));
74+
gfx.FillEllipse(Brushes.Red, new Rectangle(0, 0, 32, 32));
75+
gfx.Save();
76+
77+
//Create QR code
78+
var gen = new QRCodeGenerator();
79+
var data = gen.CreateQrCode("This is a quick test! 123#?", QRCodeGenerator.ECCLevel.H);
80+
var bmp = new QRCode(data).GetGraphic(10, Color.Black, Color.White, icon: logo);
81+
82+
var ms = new MemoryStream();
83+
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
84+
var imgBytes = ms.ToArray();
85+
var md5 = new MD5CryptoServiceProvider();
86+
var hash = md5.ComputeHash(imgBytes);
87+
var result = BitConverter.ToString(hash).Replace("-", "").ToLower();
88+
ms.Dispose();
89+
90+
result.ShouldBe("c2aae3658c7fa20cb5d22948d859c614");
91+
}
3392
#endif
3493
}
3594
}

0 commit comments

Comments
 (0)