Unparsed2396Test.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer\Xlsx;
  3. use PhpOffice\PhpSpreadsheet\Reader\Xlsx as Reader;
  4. use PhpOffice\PhpSpreadsheet\Shared\File;
  5. use PhpOffice\PhpSpreadsheet\Worksheet\BaseDrawing;
  6. use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
  7. use PhpOffice\PhpSpreadsheet\Writer\Xlsx as Writer;
  8. use PHPUnit\Framework\TestCase;
  9. class Unparsed2396Test extends TestCase
  10. {
  11. /** @var string */
  12. private $filename = '';
  13. protected function tearDown(): void
  14. {
  15. if ($this->filename !== '') {
  16. unlink($this->filename);
  17. $this->filename = '';
  18. }
  19. }
  20. private function getContents(?BaseDrawing $drawing): string
  21. {
  22. $contents = '';
  23. if ($drawing instanceof Drawing) {
  24. $contents = (string) file_get_contents($drawing->getPath());
  25. } else {
  26. self::fail('Unexpected null or baseDrawing which is not Drawing');
  27. }
  28. self::assertNotSame('', $contents);
  29. return $contents;
  30. }
  31. // Don't drop image as in issue 2396.
  32. public function testUnparsed2396(): void
  33. {
  34. $sampleFilename = 'tests/data/Writer/XLSX/issue.2396.xlsx';
  35. $reader = new Reader();
  36. $excel = $reader->load($sampleFilename);
  37. $outputFilename = $this->filename = File::temporaryFilename();
  38. $writer = new Writer($excel);
  39. $writer->save($outputFilename);
  40. //$spreadsheet = $this->writeAndReload($excel, 'Xlsx');
  41. $excel->disconnectWorksheets();
  42. $reader = new Reader();
  43. $spreadsheet = $reader->load($outputFilename);
  44. $sheet = $spreadsheet->getSheet(0);
  45. $drawing1 = $sheet->getDrawingCollection();
  46. self::assertCount(1, $drawing1);
  47. $hash = $this->getContents($drawing1[0]);
  48. $sheet = $spreadsheet->getSheet(1);
  49. $drawings = $sheet->getDrawingCollection();
  50. self::assertCount(1, $drawings);
  51. self::assertSame($hash, $this->getContents($drawings[0]));
  52. $sheet = $spreadsheet->getSheet(2);
  53. $drawings = $sheet->getDrawingCollection();
  54. self::assertCount(0, $drawings);
  55. //self::assertSame($hash, md5(file_get_contents($drawings[0]->getPath())));
  56. $sheet = $spreadsheet->getSheet(3);
  57. $drawings = $sheet->getDrawingCollection();
  58. self::assertCount(1, $drawings);
  59. self::assertSame($hash, $this->getContents($drawings[0]));
  60. $sheet = $spreadsheet->getSheet(4);
  61. $drawings = $sheet->getDrawingCollection();
  62. self::assertCount(0, $drawings);
  63. //self::assertSame($hash, md5(file_get_contents($drawings[0]->getPath())));
  64. // The next 2 sheets have 'legacyDrawing', button, and listbox.
  65. // If support is added for those, these tests may need adjustment.
  66. $sheet = $spreadsheet->getSheet(5);
  67. $drawings = $sheet->getDrawingCollection();
  68. self::assertCount(0, $drawings);
  69. //self::assertSame($hash, md5(file_get_contents($drawings[0]->getPath())));
  70. $sheet = $spreadsheet->getSheet(6);
  71. $drawings = $sheet->getDrawingCollection();
  72. self::assertCount(1, $drawings);
  73. self::assertSame($hash, $this->getContents($drawings[0]));
  74. $spreadsheet->disconnectWorksheets();
  75. }
  76. }