ChartsTitleTest.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Chart;
  3. use PhpOffice\PhpSpreadsheet\Chart\Title;
  4. use PhpOffice\PhpSpreadsheet\IOFactory;
  5. use PHPUnit\Framework\TestCase;
  6. class ChartsTitleTest extends TestCase
  7. {
  8. private static function getTitleText(?Title $title): string
  9. {
  10. return ($title === null) ? '' : $title->getCaptionText();
  11. }
  12. public function testChartTitles(): void
  13. {
  14. $filename = 'tests/data/Reader/XLSX/excelChartsTest.xlsx';
  15. $reader = IOFactory::createReader('Xlsx')->setIncludeCharts(true);
  16. $spreadsheet = $reader->load($filename);
  17. $worksheet = $spreadsheet->getActiveSheet();
  18. $charts = $worksheet->getChartCollection();
  19. self::assertEquals(5, $worksheet->getChartCount());
  20. self::assertCount(5, $charts);
  21. // No title or axis labels
  22. $chart1 = $charts[0];
  23. self::assertNotNull($chart1);
  24. $title = self::getTitleText($chart1->getTitle());
  25. self::assertEmpty($title);
  26. self::assertEmpty(self::getTitleText($chart1->getXAxisLabel()));
  27. self::assertEmpty(self::getTitleText($chart1->getYAxisLabel()));
  28. // Title, no axis labels
  29. $chart2 = $charts[1];
  30. self::assertNotNull($chart2);
  31. self::assertEquals('Chart with Title and no Axis Labels', self::getTitleText($chart2->getTitle()));
  32. self::assertEmpty(self::getTitleText($chart2->getXAxisLabel()));
  33. self::assertEmpty(self::getTitleText($chart2->getYAxisLabel()));
  34. // No title, only horizontal axis label
  35. $chart3 = $charts[2];
  36. self::assertNotNull($chart3);
  37. self::assertEmpty(self::getTitleText($chart3->getTitle()));
  38. self::assertEquals('Horizontal Axis Title Only', self::getTitleText($chart3->getXAxisLabel()));
  39. self::assertEmpty(self::getTitleText($chart3->getYAxisLabel()));
  40. // No title, only vertical axis label
  41. $chart4 = $charts[3];
  42. self::assertNotNull($chart4);
  43. self::assertEmpty(self::getTitleText($chart4->getTitle()));
  44. self::assertEquals('Vertical Axis Title Only', self::getTitleText($chart4->getYAxisLabel()));
  45. self::assertEmpty(self::getTitleText($chart4->getXAxisLabel()));
  46. // Title and both axis labels
  47. $chart5 = $charts[4];
  48. self::assertNotNull($chart5);
  49. self::assertEquals('Complete Annotations', self::getTitleText($chart5->getTitle()));
  50. self::assertEquals('Horizontal Axis Title', self::getTitleText($chart5->getXAxisLabel()));
  51. self::assertEquals('Vertical Axis Title', self::getTitleText($chart5->getYAxisLabel()));
  52. }
  53. }