From 10dcbd0cc4d836dd93bb18634af918ae7411992b Mon Sep 17 00:00:00 2001 From: Richard Webb Date: Thu, 4 Jul 2019 23:17:31 +0100 Subject: [PATCH] Add a unit test for reading document information --- .../Integration/DocumentInformationTests.cs | 38 ++++++++++++++++++ .../custom-properties.pdf | Bin 0 -> 9867 bytes .../UglyToad.PdfPig.Tests.csproj | 1 + 3 files changed, 39 insertions(+) create mode 100644 src/UglyToad.PdfPig.Tests/Integration/DocumentInformationTests.cs create mode 100644 src/UglyToad.PdfPig.Tests/Integration/SpecificTestDocuments/custom-properties.pdf diff --git a/src/UglyToad.PdfPig.Tests/Integration/DocumentInformationTests.cs b/src/UglyToad.PdfPig.Tests/Integration/DocumentInformationTests.cs new file mode 100644 index 00000000..4b7ebc03 --- /dev/null +++ b/src/UglyToad.PdfPig.Tests/Integration/DocumentInformationTests.cs @@ -0,0 +1,38 @@ +namespace UglyToad.PdfPig.Tests.Integration +{ + using System; + using PdfPig.Tokens; + using Xunit; + + public class DocumentInformationTests + { + [Fact] + public void CanReadDocumentInformation() + { + var path = IntegrationHelpers.GetSpecificTestDocumentPath("custom-properties.pdf"); + + using (var document = PdfDocument.Open(path)) + { + var information = document.Information; + + Assert.Equal("Writer", information.Creator); + Assert.Equal("MoreKeywords", information.Keywords); + Assert.Equal("LibreOffice 6.1", information.Producer); + Assert.Equal("TestSubject", information.Subject); + Assert.Equal("TestTitle", information.Title); + + var infoDictionary = information.DocumentInformationDictionary; + + var nameToken = NameToken.Create("CustomProperty1"); + Assert.True(infoDictionary.TryGet(nameToken, out var valueToken), "first custom property must be present"); + Assert.IsType(valueToken); + Assert.Equal("Property Value", ((StringToken)valueToken).Data); + + nameToken = NameToken.Create("CustomProperty2"); + Assert.True(infoDictionary.TryGet(nameToken, out var valueToken2), "second custom property must be present"); + Assert.IsType(valueToken2); + Assert.Equal("Another Property Value", ((StringToken)valueToken2).Data); + } + } + } +} diff --git a/src/UglyToad.PdfPig.Tests/Integration/SpecificTestDocuments/custom-properties.pdf b/src/UglyToad.PdfPig.Tests/Integration/SpecificTestDocuments/custom-properties.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6040631011c909a735944b8709dc8cd2119b50be GIT binary patch literal 9867 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 + PreserveNewest