Skip to content

Commit

Permalink
Adds tests to ensure a QPdf object can only be written once
Browse files Browse the repository at this point in the history
  • Loading branch information
svengeance committed Dec 31, 2023
1 parent b058c73 commit d61f271
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 43 deletions.
43 changes: 0 additions & 43 deletions tests/QPdfSharp.Tests/QPdfTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,48 +52,5 @@ public async Task Can_read_pdf_from_memory()
// Assert
createPdfFromBytes.Should().NotThrow();
}

[Fact]
public async Task Can_write_pdf_file()
{
// Arrange
var outputFileName = "qgrug.pdf";
using var qpdf = new QPdf(TestAssets.Grug);

// Act
qpdf.WriteFile(outputFileName);

// Assert
File.Exists(outputFileName).Should().BeTrue();
(await File.ReadAllBytesAsync(outputFileName)).Should().NotBeEmpty();
File.Delete(outputFileName);
}

[Fact]
public void Can_write_pdf_bytes()
{
// Arrange
using var qpdf = new QPdf(TestAssets.Grug);

// Act
var getPdfBytes = qpdf.WriteBytes().ToArray();

// Assert
getPdfBytes.Should().NotBeEmpty();
}

[Fact]
public void Can_write_pdf_stream()
{
// Arrange
using var qpdf = new QPdf(TestAssets.Grug);

// Act
using var pdfStream = qpdf.WriteStream();

// Assert
pdfStream.Should().NotHaveLength(0);
pdfStream.Should().BeReadOnly();
}
}

97 changes: 97 additions & 0 deletions tests/QPdfSharp.Tests/QPdfWritingTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
// Copyright © Stephen (Sven) Vernyi and Contributors. Licensed under the MIT License (MIT). See License.md in the repository root for more information.

namespace QPdfSharp.Tests;

public class QPdfWritingTests
{
[Fact]
public async Task Can_write_pdf_file()
{
// Arrange
var outputFileName = "qgrug.pdf";

using var qpdf = new QPdf(TestAssets.Grug);

// Act
qpdf.WriteFile(outputFileName);

// Assert
File.Exists(outputFileName).Should().BeTrue();
(await File.ReadAllBytesAsync(outputFileName)).Should().NotBeEmpty();
File.Delete(outputFileName);
}

[Fact]
public void Can_write_pdf_bytes()
{
// Arrange
using var qpdf = new QPdf(TestAssets.Grug);

// Act
var getPdfBytes = qpdf.WriteBytes().ToArray();

// Assert
getPdfBytes.Should().NotBeEmpty();
}

[Fact]
public void Can_write_pdf_stream()
{
// Arrange
using var qpdf = new QPdf(TestAssets.Grug);

// Act
using var pdfStream = qpdf.WriteStream();

// Assert
pdfStream.Should().NotHaveLength(0);
pdfStream.Should().BeReadOnly();
}

[Fact]
public void Throws_on_consecutive_writes_to_stream()
{
// Arrange
using var qpdf = new QPdf(TestAssets.Grug);

_ = qpdf.WriteBytes();

// Act
var writeAgain = () => qpdf.WriteStream();

// Assert
writeAgain.Should().Throw<InvalidOperationException>();
}

[Fact]
public void Throws_on_consecutive_writes_to_bytes()
{
// Arrange
using var qpdf = new QPdf(TestAssets.Grug);

_ = qpdf.WriteBytes();

// Act
var writeAgain = () => qpdf.WriteBytes().ToArray();

// Assert
writeAgain.Should().Throw<InvalidOperationException>();
}

[Fact]
public void Throws_on_consecutive_writes_to_file()
{
// Arrange
var outputFileName = "qgrug.pdf";

using var qpdf = new QPdf(TestAssets.Grug);
qpdf.WriteFile(outputFileName);

// Act
var writeAgain = () => qpdf.WriteFile(outputFileName);

// Assert
writeAgain.Should().Throw<InvalidOperationException>();
File.Delete(outputFileName);
}
}

0 comments on commit d61f271

Please sign in to comment.