diff --git a/QRCoder.Core.Tests/Renderers/Base64QRCodeTests.cs b/QRCoder.Core.Tests/Renderers/Base64QRCodeTests.cs index f83f431..580061d 100644 --- a/QRCoder.Core.Tests/Renderers/Base64QRCodeTests.cs +++ b/QRCoder.Core.Tests/Renderers/Base64QRCodeTests.cs @@ -67,5 +67,33 @@ public void can_instantiate_parameterless() var b64Qr = new Base64QRCode(); b64Qr.ShouldNotBeNull(); } + + [Fact] + public void can_set_data_and_dispose() + { + // Arrange + using (var gen = new QRCodeGenerator()) + using (var data = gen.CreateQrCode("SetQRCodeData test", QRCodeGenerator.ECCLevel.M)) + using (var b64Qr = new Base64QRCode()) + { + // Act + b64Qr.SetQRCodeData(data); + var base64 = b64Qr.GetGraphic(10); + + // Assert + base64.ShouldNotBeNullOrEmpty(); + Convert.FromBase64String(base64).Length.ShouldBeGreaterThan(0); + } + } + + [Fact] + public void parameterless_dispose_does_not_throw() + { + // Arrange + var b64Qr = new Base64QRCode(); + + // Act & Assert + Should.NotThrow(() => b64Qr.Dispose()); + } } } diff --git a/QRCoder.Core/Renderers/Base64QRCode.cs b/QRCoder.Core/Renderers/Base64QRCode.cs index e5ed419..a5134fb 100644 --- a/QRCoder.Core/Renderers/Base64QRCode.cs +++ b/QRCoder.Core/Renderers/Base64QRCode.cs @@ -89,9 +89,25 @@ public Base64QRCode(QRCodeData data) : base(data) /// The data. public override void SetQRCodeData(QRCodeData data) { + base.SetQRCodeData(data); this.qr.SetQRCodeData(data); } + /// + /// Releases the unmanaged resources and optionally releases the managed resources. + /// + /// true to release both managed and unmanaged resources; false to release only unmanaged resources. + protected override void Dispose(bool disposing) + { + if (disposing) + { + this.qr?.Dispose(); + this.QrCodeData = null; + } + + base.Dispose(disposing); + } + /// /// Returns the graphic representation of the QR code. ///