| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- <?php
- namespace PhpOffice\PhpSpreadsheetTests\Reader\Ods;
- use PhpOffice\PhpSpreadsheet\Reader\Ods;
- use PhpOffice\PhpSpreadsheet\Spreadsheet;
- use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
- use PHPUnit\Framework\TestCase;
- class PageSetupTest extends TestCase
- {
- private const MARGIN_PRECISION = 0.00000001;
- private const MARGIN_UNIT_CONVERSION = 2.54; // Inches to cm
- /**
- * @var Spreadsheet
- */
- private $spreadsheet;
- protected function setup(): void
- {
- $filename = 'tests/data/Reader/Ods/PageSetup.ods';
- $reader = new Ods();
- $this->spreadsheet = $reader->load($filename);
- }
- public function testPageSetup(): void
- {
- $assertions = $this->pageSetupAssertions();
- foreach ($this->spreadsheet->getAllSheets() as $worksheet) {
- if (!array_key_exists($worksheet->getTitle(), $assertions)) {
- continue;
- }
- $sheetAssertions = $assertions[$worksheet->getTitle()];
- foreach ($sheetAssertions as $test => $expectedResult) {
- $testMethodName = 'get' . ucfirst($test);
- $actualResult = $worksheet->getPageSetup()->$testMethodName();
- self::assertSame(
- $expectedResult,
- $actualResult,
- "Failed assertion for Worksheet '{$worksheet->getTitle()}' {$test}"
- );
- }
- }
- }
- public function testPageMargins(): void
- {
- $assertions = $this->pageMarginAssertions();
- foreach ($this->spreadsheet->getAllSheets() as $worksheet) {
- if (!array_key_exists($worksheet->getTitle(), $assertions)) {
- continue;
- }
- $sheetAssertions = $assertions[$worksheet->getTitle()];
- foreach ($sheetAssertions as $test => $expectedResult) {
- $testMethodName = 'get' . ucfirst($test);
- $actualResult = $worksheet->getPageMargins()->$testMethodName();
- self::assertEqualsWithDelta(
- $expectedResult,
- $actualResult,
- self::MARGIN_PRECISION,
- "Failed assertion for Worksheet '{$worksheet->getTitle()}' {$test} margin"
- );
- }
- }
- }
- private function pageSetupAssertions(): array
- {
- return [
- 'Sheet1' => [
- 'orientation' => PageSetup::ORIENTATION_PORTRAIT,
- 'scale' => 75,
- 'horizontalCentered' => true,
- 'verticalCentered' => false,
- 'pageOrder' => PageSetup::PAGEORDER_DOWN_THEN_OVER,
- ],
- 'Sheet2' => [
- 'orientation' => PageSetup::ORIENTATION_LANDSCAPE,
- 'scale' => 100,
- 'horizontalCentered' => false,
- 'verticalCentered' => true,
- 'pageOrder' => PageSetup::PAGEORDER_OVER_THEN_DOWN,
- ],
- 'Sheet3' => [
- 'orientation' => PageSetup::ORIENTATION_PORTRAIT,
- 'scale' => 90,
- 'horizontalCentered' => true,
- 'verticalCentered' => true,
- 'pageOrder' => PageSetup::PAGEORDER_DOWN_THEN_OVER,
- ],
- 'Sheet4' => [
- // Default Settings
- 'orientation' => PageSetup::ORIENTATION_DEFAULT,
- 'scale' => 100,
- 'horizontalCentered' => false,
- 'verticalCentered' => false,
- 'pageOrder' => PageSetup::PAGEORDER_DOWN_THEN_OVER,
- ],
- ];
- }
- private function pageMarginAssertions(): array
- {
- return [
- 'Sheet1' => [
- // Here the values are in cm
- 'top' => 0.8 / self::MARGIN_UNIT_CONVERSION,
- 'header' => 1.6 / self::MARGIN_UNIT_CONVERSION,
- 'left' => 1.3 / self::MARGIN_UNIT_CONVERSION,
- 'right' => 1.3 / self::MARGIN_UNIT_CONVERSION,
- 'bottom' => 0.8 / self::MARGIN_UNIT_CONVERSION,
- 'footer' => 1.1 / self::MARGIN_UNIT_CONVERSION,
- ],
- 'Sheet2' => [
- // Here the values are in cm
- 'top' => 0.8 / self::MARGIN_UNIT_CONVERSION,
- 'header' => 1.1 / self::MARGIN_UNIT_CONVERSION,
- 'left' => 1.8 / self::MARGIN_UNIT_CONVERSION,
- 'right' => 1.8 / self::MARGIN_UNIT_CONVERSION,
- 'bottom' => 0.8 / self::MARGIN_UNIT_CONVERSION,
- 'footer' => 1.1 / self::MARGIN_UNIT_CONVERSION,
- ],
- 'Sheet3' => [
- // Here the values are in cm
- 'top' => 1.3 / self::MARGIN_UNIT_CONVERSION,
- 'header' => 1.1 / self::MARGIN_UNIT_CONVERSION,
- 'left' => 1.8 / self::MARGIN_UNIT_CONVERSION,
- 'right' => 1.8 / self::MARGIN_UNIT_CONVERSION,
- 'bottom' => 1.3 / self::MARGIN_UNIT_CONVERSION,
- 'footer' => 1.1 / self::MARGIN_UNIT_CONVERSION,
- ],
- 'Sheet4' => [
- // Default Settings (already in inches)
- 'top' => 0.3,
- 'header' => 0.45,
- 'left' => 0.7,
- 'right' => 0.7,
- 'bottom' => 0.3,
- 'footer' => 0.45,
- ],
- ];
- }
- }
|