ConformanceTestBase.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. PDFUA_Conformance = PDFUA_Conformance.PDFUA_1
  22. })
  23. .GeneratePdfAndShow();
  24. }
  25. [Test, TestCaseSource(nameof(PDFA_ConformanceLevels))]
  26. public void Test_PDFA(PDFA_Conformance conformance)
  27. {
  28. GetDocumentUnderTest()
  29. .WithMetadata(GetMetadata())
  30. .WithSettings(new DocumentSettings
  31. {
  32. PDFA_Conformance = conformance
  33. })
  34. .TestConformanceWithVeraPdf();
  35. }
  36. [Test, TestCaseSource(nameof(PDFUA_ConformanceLevels))]
  37. public void Test_PDFUA(PDFUA_Conformance conformance)
  38. {
  39. GetDocumentUnderTest()
  40. .WithMetadata(GetMetadata())
  41. .WithSettings(new DocumentSettings
  42. {
  43. PDFUA_Conformance = conformance
  44. })
  45. .TestConformanceWithVeraPdf();
  46. }
  47. [Test]
  48. public void TestSemanticMeaning()
  49. {
  50. var expectedSemanticTree = GetExpectedSemanticTree();
  51. GetDocumentUnderTest()
  52. .WithSettings(new DocumentSettings
  53. {
  54. PDFUA_Conformance = PDFUA_Conformance.PDFUA_1
  55. })
  56. .TestSemanticTree(expectedSemanticTree);
  57. }
  58. private DocumentMetadata GetMetadata()
  59. {
  60. return new DocumentMetadata
  61. {
  62. Language = "en-US",
  63. Title = "Conformance Test",
  64. Subject = this.GetType().Name.Replace("Tests", string.Empty).PrettifyName()
  65. };
  66. }
  67. protected abstract Document GetDocumentUnderTest();
  68. protected abstract SemanticTreeNode? GetExpectedSemanticTree();
  69. }