diff --git a/QRCoderTests/QRCodeRendererTests.cs b/QRCoderTests/QRCodeRendererTests.cs index c750f924..0a95ca11 100644 --- a/QRCoderTests/QRCodeRendererTests.cs +++ b/QRCoderTests/QRCodeRendererTests.cs @@ -37,19 +37,12 @@ public void can_create_standard_qrcode_graphic() [Fact] [Category("QRRenderer/QRCode")] public void can_create_qrcode_with_transparent_logo_graphic() - { - //Create dummy logo - var logo = new Bitmap(32, 32); - var gfx = Graphics.FromImage(logo); - gfx.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; - gfx.FillRectangle(Brushes.Transparent, new Rectangle(0, 0, 32, 32)); - gfx.FillEllipse(Brushes.Red, new Rectangle(0, 0, 32, 32)); - gfx.Save(); - + { //Create QR code var gen = new QRCodeGenerator(); var data = gen.CreateQrCode("This is a quick test! 123#?", QRCodeGenerator.ECCLevel.H); - var bmp = new QRCode(data).GetGraphic(10, Color.Black, Color.Transparent, icon: logo); + var bmp = new QRCode(data).GetGraphic(10, Color.Black, Color.Transparent, icon: Resources.noun_software_engineer_2909346); + //Used logo is licensed under public domain. Ref.: https://thenounproject.com/Iconathon1/collection/redefining-women/?i=2909346 var ms = new MemoryStream(); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png); @@ -59,25 +52,18 @@ public void can_create_qrcode_with_transparent_logo_graphic() var result = BitConverter.ToString(hash).Replace("-", "").ToLower(); ms.Dispose(); - result.ShouldBe("8f03d2c3fc5998cebb46658c3e6293b1"); + result.ShouldBe("ee65d96c3013f6032b561cc768251eef"); } [Fact] [Category("QRRenderer/QRCode")] public void can_create_qrcode_with_non_transparent_logo_graphic() { - //Create dummy logo - var logo = new Bitmap(32, 32); - var gfx = Graphics.FromImage(logo); - gfx.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; - gfx.FillRectangle(Brushes.White, new Rectangle(0, 0, 32, 32)); - gfx.FillEllipse(Brushes.Red, new Rectangle(0, 0, 32, 32)); - gfx.Save(); - //Create QR code var gen = new QRCodeGenerator(); var data = gen.CreateQrCode("This is a quick test! 123#?", QRCodeGenerator.ECCLevel.H); - var bmp = new QRCode(data).GetGraphic(10, Color.Black, Color.White, icon: logo); + var bmp = new QRCode(data).GetGraphic(10, Color.Black, Color.White, icon: Resources.noun_software_engineer_2909346); + //Used logo is licensed under public domain. Ref.: https://thenounproject.com/Iconathon1/collection/redefining-women/?i=2909346 var ms = new MemoryStream(); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png); @@ -87,7 +73,7 @@ public void can_create_qrcode_with_non_transparent_logo_graphic() var result = BitConverter.ToString(hash).Replace("-", "").ToLower(); ms.Dispose(); - result.ShouldBe("c2aae3658c7fa20cb5d22948d859c614"); + result.ShouldBe("1d718f06f904af4a46748f02af2d4eec"); } #endif } diff --git a/QRCoderTests/QRCoderTests.csproj b/QRCoderTests/QRCoderTests.csproj index a18b79f9..4b3b13d7 100644 --- a/QRCoderTests/QRCoderTests.csproj +++ b/QRCoderTests/QRCoderTests.csproj @@ -10,13 +10,13 @@ - + - + @@ -26,6 +26,21 @@ + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + $(MSBuildProgramFiles32)\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\Client diff --git a/QRCoderTests/Resources.Designer.cs b/QRCoderTests/Resources.Designer.cs new file mode 100644 index 00000000..ca6ff43f --- /dev/null +++ b/QRCoderTests/Resources.Designer.cs @@ -0,0 +1,77 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace QRCoderTests { + using System; + + + + /// + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + +#if !NETCOREAPP1_1 + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + + /// + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("QRCoderTests.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap noun_software_engineer_2909346 { + get { + object obj = ResourceManager.GetObject("noun_software_engineer_2909346", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } +#endif + } +} diff --git a/QRCoderTests/Resources.resx b/QRCoderTests/Resources.resx new file mode 100644 index 00000000..ce057c3a --- /dev/null +++ b/QRCoderTests/Resources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + assets\noun_software engineer_2909346.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/QRCoderTests/assets/noun_software engineer_2909346.png b/QRCoderTests/assets/noun_software engineer_2909346.png new file mode 100644 index 00000000..bc100986 Binary files /dev/null and b/QRCoderTests/assets/noun_software engineer_2909346.png differ