ConformanceTestBase.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using QuestPDF.Drawing;
  2. using QuestPDF.Fluent;
  3. using QuestPDF.Helpers;
  4. using QuestPDF.Infrastructure;
  5. namespace QuestPDF.ConformanceTests.TestEngine;
  6. [TestFixture]
  7. [Parallelizable(ParallelScope.All)]
  8. internal abstract class ConformanceTestBase
  9. {
  10. public static readonly IEnumerable<PDFA_Conformance> PDFA_ConformanceLevels = Enum.GetValues<PDFA_Conformance>().Skip(1);
  11. public static readonly IEnumerable<PDFUA_Conformance> PDFUA_ConformanceLevels = Enum.GetValues<PDFUA_Conformance>().Skip(1);
  12. [Test]
  13. [Explicit("Manual debugging only (override to enable)")]
  14. public void GenerateAndShow()
  15. {
  16. GetDocumentUnderTest()
  17. .WithMetadata(GetMetadata())
  18. .WithSettings(new DocumentSettings
  19. {
  20. PDFA_Conformance = PDFA_Conformance.PDFA_3A
  21. })
  22. .GeneratePdfAndShow();
  23. }
  24. [Test, TestCaseSource(nameof(PDFA_ConformanceLevels))]
  25. public void Test_PDFA(PDFA_Conformance conformance)
  26. {
  27. GetDocumentUnderTest()
  28. .WithMetadata(GetMetadata())
  29. .WithSettings(new DocumentSettings
  30. {
  31. PDFA_Conformance = conformance
  32. })
  33. .TestConformanceWithVeraPdf();
  34. }
  35. [Test, TestCaseSource(nameof(PDFUA_ConformanceLevels))]
  36. public void Test_PDFUA(PDFUA_Conformance conformance)
  37. {
  38. GetDocumentUnderTest()
  39. .WithMetadata(GetMetadata())
  40. .WithSettings(new DocumentSettings
  41. {
  42. PDFUA_Conformance = conformance
  43. })
  44. .TestConformanceWithVeraPdf();
  45. }
  46. [Test]
  47. public void TestSemanticMeaning()
  48. {
  49. var expectedSemanticTree = GetExpectedSemanticTree();
  50. GetDocumentUnderTest()
  51. .WithSettings(new DocumentSettings
  52. {
  53. PDFUA_Conformance = PDFUA_Conformance.PDFUA_1
  54. })
  55. .TestSemanticTree(expectedSemanticTree);
  56. }
  57. private DocumentMetadata GetMetadata()
  58. {
  59. return new DocumentMetadata
  60. {
  61. Language = "en-US",
  62. Title = "Conformance Test",
  63. Subject = this.GetType().Name.Replace("Tests", string.Empty).PrettifyName()
  64. };
  65. }
  66. protected abstract Document GetDocumentUnderTest();
  67. protected abstract SemanticTreeNode? GetExpectedSemanticTree();
  68. }