XlsGifBmpTest.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer\Xls;
  3. use DateTime;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
  6. use PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing;
  7. use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
  8. class XlsGifBmpTest extends AbstractFunctional
  9. {
  10. /**
  11. * @var string
  12. */
  13. private $filename = '';
  14. protected function tearDown(): void
  15. {
  16. if ($this->filename) {
  17. unlink($this->filename);
  18. }
  19. $this->filename = '';
  20. }
  21. public function testBmp(): void
  22. {
  23. $pgmstart = (float) (new DateTime())->format('U');
  24. $spreadsheet = new Spreadsheet();
  25. $filstart = $spreadsheet->getProperties()->getModified();
  26. self::assertLessThanOrEqual($filstart, $pgmstart);
  27. // Add a drawing to the worksheet
  28. $drawing = new Drawing();
  29. $drawing->setName('Letters B, M, and P');
  30. $drawing->setDescription('Handwritten B, M, and P');
  31. $drawing->setPath(__DIR__ . '/../../../../samples/images/bmp.bmp');
  32. $drawing->setHeight(36);
  33. $drawing->setWorksheet($spreadsheet->getActiveSheet());
  34. $drawing->setCoordinates('A1');
  35. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
  36. $creationDatestamp = $reloadedSpreadsheet->getProperties()->getCreated();
  37. $filstart = $creationDatestamp;
  38. $worksheet = $reloadedSpreadsheet->getActiveSheet();
  39. $drawings = $worksheet->getDrawingCollection();
  40. self::assertCount(1, $drawings);
  41. foreach ($worksheet->getDrawingCollection() as $drawing) {
  42. // See if Scrutinizer approves this
  43. $mimeType = ($drawing instanceof MemoryDrawing) ? $drawing->getMimeType() : 'notmemorydrawing';
  44. self::assertEquals('image/png', $mimeType);
  45. }
  46. $pgmend = (float) (new DateTime())->format('U');
  47. self::assertLessThanOrEqual($pgmend, $pgmstart);
  48. self::assertLessThanOrEqual($pgmend, $filstart);
  49. self::assertLessThanOrEqual($filstart, $pgmstart);
  50. }
  51. public function testGif(): void
  52. {
  53. $spreadsheet = new Spreadsheet();
  54. // Add a drawing to the worksheet
  55. $drawing = new Drawing();
  56. $drawing->setName('Letters G, I, and G');
  57. $drawing->setDescription('Handwritten G, I, and F');
  58. $drawing->setPath(__DIR__ . '/../../../../samples/images/gif.gif');
  59. $drawing->setHeight(36);
  60. $drawing->setWorksheet($spreadsheet->getActiveSheet());
  61. $drawing->setCoordinates('A1');
  62. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
  63. $worksheet = $reloadedSpreadsheet->getActiveSheet();
  64. $drawings = $worksheet->getDrawingCollection();
  65. self::assertCount(1, $drawings);
  66. foreach ($worksheet->getDrawingCollection() as $drawing) {
  67. $mimeType = ($drawing instanceof MemoryDrawing) ? $drawing->getMimeType() : 'notmemorydrawing';
  68. self::assertEquals('image/png', $mimeType);
  69. }
  70. }
  71. public function testInvalidTimestamp(): void
  72. {
  73. $this->expectException(\PhpOffice\PhpSpreadsheet\Reader\Exception::class);
  74. \PhpOffice\PhpSpreadsheet\Shared\OLE::OLE2LocalDate(' ');
  75. }
  76. }