ConformanceTestBase.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using QuestPDF.Drawing;
  2. using QuestPDF.Fluent;
  3. using QuestPDF.Infrastructure;
  4. namespace QuestPDF.ConformanceTests.TestEngine;
  5. [TestFixture]
  6. [Parallelizable(ParallelScope.All)]
  7. internal abstract class ConformanceTestBase
  8. {
  9. public static readonly IEnumerable<PDFA_Conformance> PDFA_ConformanceLevels = Enum.GetValues<PDFA_Conformance>().Skip(1);
  10. public static readonly IEnumerable<PDFUA_Conformance> PDFUA_ConformanceLevels = Enum.GetValues<PDFUA_Conformance>().Skip(1);
  11. [Test]
  12. [Explicit("Manual debugging only (override to enable)")]
  13. public void GenerateAndShow()
  14. {
  15. GetDocumentUnderTest()
  16. .WithSettings(new DocumentSettings
  17. {
  18. PDFA_Conformance = PDFA_Conformance.PDFA_3A
  19. })
  20. .GeneratePdfAndShow();
  21. }
  22. [Test, TestCaseSource(nameof(PDFA_ConformanceLevels))]
  23. public void Test_PDFA(PDFA_Conformance conformance)
  24. {
  25. GetDocumentUnderTest()
  26. .WithSettings(new DocumentSettings
  27. {
  28. PDFA_Conformance = conformance
  29. })
  30. .TestConformanceWithVeraPdf();
  31. }
  32. [Test, TestCaseSource(nameof(PDFUA_ConformanceLevels))]
  33. public void Test_PDFUA(PDFUA_Conformance conformance)
  34. {
  35. GetDocumentUnderTest()
  36. .WithSettings(new DocumentSettings
  37. {
  38. PDFUA_Conformance = conformance
  39. })
  40. .TestConformanceWithVeraPdf();
  41. }
  42. [Test]
  43. public void TestSemanticMeaning()
  44. {
  45. var expectedSemanticTree = GetExpectedSemanticTree();
  46. GetDocumentUnderTest().TestSemanticTree(expectedSemanticTree);
  47. }
  48. protected abstract Document GetDocumentUnderTest();
  49. protected abstract SemanticTreeNode? GetExpectedSemanticTree();
  50. }