Skip to content

Commit c54400e

Browse files
authored
Merge pull request #62 from afonsoft/devin/1783618892-update-docs-tests
feat: ajusta Postscript/EPS, documentação e testes
2 parents dac6c3b + 9288896 commit c54400e

9 files changed

Lines changed: 1109 additions & 40 deletions

File tree

QRCoder.Core.Tests/Generators/PayloadGeneratorBddTests.cs

Lines changed: 453 additions & 0 deletions
Large diffs are not rendered by default.

QRCoder.Core.Tests/Renderers/PostscriptQRCodeTests.cs

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,5 +72,66 @@ public void can_instantiate_parameterless()
7272
var psQr = new PostscriptQRCode();
7373
psQr.ShouldNotBeNull();
7474
}
75+
76+
/// <summary>
77+
/// Dado uma saida no formato EPS
78+
/// Quando gerar o grafico
79+
/// Entao nao deve conter setpagedevice nem showpage
80+
/// </summary>
81+
[Fact]
82+
public void Dado_FormatoEps_Quando_GerarGrafico_Entao_NaoContemSetpagedeviceNemShowpage()
83+
{
84+
using (var gen = new QRCodeGenerator())
85+
using (var data = gen.CreateQrCode("EPS test", QRCodeGenerator.ECCLevel.M))
86+
using (var psQr = new PostscriptQRCode(data))
87+
{
88+
var eps = psQr.GetGraphic(new Size(100, 100), epsFormat: true);
89+
eps.ShouldNotBeNullOrEmpty();
90+
eps.ShouldContain("EPSF");
91+
eps.ShouldContain("%%BeginProlog");
92+
eps.ShouldContain("7 dict begin");
93+
eps.ShouldContain("%%EndProlog");
94+
eps.ShouldContain("%%BeginSetup");
95+
eps.ShouldNotContain("setpagedevice");
96+
eps.ShouldNotContain("showpage");
97+
}
98+
}
99+
100+
/// <summary>
101+
/// Dado uma saida no formato PostScript
102+
/// Quando gerar o grafico
103+
/// Entao deve conter setpagedevice e showpage
104+
/// </summary>
105+
[Fact]
106+
public void Dado_FormatoPostScript_Quando_GerarGrafico_Entao_ContemSetpagedeviceEShowpage()
107+
{
108+
using (var gen = new QRCodeGenerator())
109+
using (var data = gen.CreateQrCode("PS test", QRCodeGenerator.ECCLevel.M))
110+
using (var psQr = new PostscriptQRCode(data))
111+
{
112+
var ps = psQr.GetGraphic(new Size(100, 100), epsFormat: false);
113+
ps.ShouldNotBeNullOrEmpty();
114+
ps.ShouldContain("setpagedevice");
115+
ps.ShouldContain("showpage");
116+
ps.ShouldContain("%%BeginFunctions");
117+
}
118+
}
119+
120+
/// <summary>
121+
/// Dado um texto qualquer
122+
/// Quando usar o helper no formato EPS
123+
/// Entao deve retornar string EPS valida
124+
/// </summary>
125+
[Fact]
126+
public void Dado_TextoQualquer_Quando_UsarHelperNoFormatoEps_Entao_RetornaStringEpsValida()
127+
{
128+
// Arrange & Act
129+
var eps = PostscriptQRCodeHelper.GetQRCode("Helper EPS", 20, "#000000", "#FFFFFF", QRCodeGenerator.ECCLevel.M, epsFormat: true);
130+
131+
// Assert
132+
eps.ShouldNotBeNullOrEmpty();
133+
eps.ShouldContain("EPSF");
134+
eps.ShouldNotContain("showpage");
135+
}
75136
}
76137
}

QRCoder.Core.Tests/Renderers/RendererCoverageTests.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using QRCoder.Core.Models;
88
using QRCoder.Core.Renderers;
99
using QRCoder.Core.Exceptions;
10+
using SkiaSharp;
1011

1112
namespace QRCoder.Core.Tests
1213
{
@@ -107,6 +108,31 @@ public void Dado_DadosValidos_Quando_UsarHelperBase64QRCode_Entao_RetornaStringN
107108
result.Length.ShouldBeGreaterThan(0);
108109
result.ShouldStartWith("iVBORw0KGgoAAAANS"); // Base64 PNG header
109110
}
111+
112+
/// <summary>
113+
/// Dado que tenho um tipo de imagem invalido
114+
/// Quando gero o grafico Base64
115+
/// Entao deve retornar PNG base64 por padrao
116+
/// </summary>
117+
[Fact]
118+
public void Dado_TipoImagemInvalido_Quando_GerarGraficoBase64_Entao_RetornaPngBase64()
119+
{
120+
// Arrange
121+
using (var gen = new QRCodeGenerator())
122+
using (var data = gen.CreateQrCode("Test Data", QRCodeGenerator.ECCLevel.M))
123+
{
124+
var base64QR = new Base64QRCode(data);
125+
var invalidImageType = (Base64QRCode.ImageType)999;
126+
127+
// Act
128+
var result = base64QR.GetGraphic(5, SKColors.Black, SKColors.White, true, invalidImageType);
129+
130+
// Assert
131+
result.ShouldNotBeNull();
132+
result.Length.ShouldBeGreaterThan(0);
133+
result.ShouldStartWith("iVBORw0KGgoAAAANS"); // Base64 PNG header
134+
}
135+
}
110136
}
111137

112138
/// <summary>

QRCoder.Core/Assets/nuget-readme.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ Based on [QRCoder](https://github.com/codebude/QRCoder). Supports **.NET Standar
99
## Quick Start
1010

1111
```csharp
12-
using QRCoder.Core;
12+
using System;
13+
using System.IO;
14+
using QRCoder.Core.Generators;
15+
using QRCoder.Core.Models;
16+
using QRCoder.Core.Renderers;
17+
using SkiaSharp;
1318

1419
// Generate QR code data
1520
using var generator = new QRCodeGenerator();
@@ -39,7 +44,12 @@ File.WriteAllBytes("qrcode.png", pngBytes);
3944
## Multiple Formats Example
4045

4146
```csharp
42-
using QRCoder.Core;
47+
using System;
48+
using System.IO;
49+
using QRCoder.Core.Generators;
50+
using QRCoder.Core.Models;
51+
using QRCoder.Core.Renderers;
52+
using SkiaSharp;
4353

4454
using var gen = new QRCodeGenerator();
4555
using var data = gen.CreateQrCode("Hello World", QRCodeGenerator.ECCLevel.M);
@@ -66,7 +76,12 @@ using var bitmap = qr.GetGraphic(10, "#1a1a2e", "#e0e0e0");
6676
Generate formatted QR code content for common use cases:
6777

6878
```csharp
69-
using QRCoder.Core;
79+
using System;
80+
using System.IO;
81+
using QRCoder.Core.Generators;
82+
using QRCoder.Core.Models;
83+
using QRCoder.Core.Renderers;
84+
using SkiaSharp;
7085

7186
using var gen = new QRCodeGenerator();
7287

0 commit comments

Comments
 (0)