PageSetupBug1772Test.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Reader\Ods;
  3. use PhpOffice\PhpSpreadsheet\Reader\Ods;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
  6. use PHPUnit\Framework\TestCase;
  7. class PageSetupBug1772Test extends TestCase
  8. {
  9. private const MARGIN_PRECISION = 0.00000001;
  10. /**
  11. * @var Spreadsheet
  12. */
  13. private $spreadsheet;
  14. protected function setup(): void
  15. {
  16. $filename = 'tests/data/Reader/Ods/bug1772.ods';
  17. $reader = new Ods();
  18. $this->spreadsheet = $reader->load($filename);
  19. }
  20. public function testPageSetup(): void
  21. {
  22. $assertions = $this->pageSetupAssertions();
  23. foreach ($this->spreadsheet->getAllSheets() as $worksheet) {
  24. if (!array_key_exists($worksheet->getTitle(), $assertions)) {
  25. continue;
  26. }
  27. $sheetAssertions = $assertions[$worksheet->getTitle()];
  28. foreach ($sheetAssertions as $test => $expectedResult) {
  29. $testMethodName = 'get' . ucfirst($test);
  30. $actualResult = $worksheet->getPageSetup()->$testMethodName();
  31. self::assertSame(
  32. $expectedResult,
  33. $actualResult,
  34. "Failed assertion for Worksheet '{$worksheet->getTitle()}' {$test}"
  35. );
  36. }
  37. }
  38. }
  39. public function testPageMargins(): void
  40. {
  41. $assertions = $this->pageMarginAssertions();
  42. foreach ($this->spreadsheet->getAllSheets() as $worksheet) {
  43. if (!array_key_exists($worksheet->getTitle(), $assertions)) {
  44. continue;
  45. }
  46. $sheetAssertions = $assertions[$worksheet->getTitle()];
  47. foreach ($sheetAssertions as $test => $expectedResult) {
  48. $testMethodName = 'get' . ucfirst($test);
  49. $actualResult = $worksheet->getPageMargins()->$testMethodName();
  50. self::assertEqualsWithDelta(
  51. $expectedResult,
  52. $actualResult,
  53. self::MARGIN_PRECISION,
  54. "Failed assertion for Worksheet '{$worksheet->getTitle()}' {$test} margin"
  55. );
  56. }
  57. }
  58. }
  59. private function pageSetupAssertions(): array
  60. {
  61. return [
  62. 'Employee update template' => [
  63. 'orientation' => PageSetup::ORIENTATION_DEFAULT,
  64. 'scale' => 100,
  65. 'horizontalCentered' => false,
  66. 'verticalCentered' => false,
  67. 'pageOrder' => PageSetup::PAGEORDER_DOWN_THEN_OVER,
  68. ],
  69. ];
  70. }
  71. private function pageMarginAssertions(): array
  72. {
  73. return [
  74. 'Employee update template' => [
  75. // Here the values are in cm
  76. 'top' => 0.0,
  77. 'header' => 0.2953,
  78. 'left' => 0.0,
  79. 'right' => 0.0,
  80. 'bottom' => 0.0,
  81. 'footer' => 0.2953,
  82. ],
  83. ];
  84. }
  85. }