AbstractFunctional.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Functional;
  3. use PhpOffice\PhpSpreadsheet\IOFactory;
  4. use PhpOffice\PhpSpreadsheet\Shared\File;
  5. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  6. use PHPUnit\Framework\TestCase;
  7. /**
  8. * Base class for functional test to write and reload file on disk across different formats.
  9. */
  10. abstract class AbstractFunctional extends TestCase
  11. {
  12. /**
  13. * Write spreadsheet to disk, reload and return it.
  14. *
  15. * @param string $format
  16. *
  17. * @return Spreadsheet
  18. */
  19. protected function writeAndReload(Spreadsheet $spreadsheet, $format, ?callable $readerCustomizer = null, ?callable $writerCustomizer = null)
  20. {
  21. $filename = File::temporaryFilename();
  22. $writer = IOFactory::createWriter($spreadsheet, $format);
  23. if ($writerCustomizer) {
  24. $writerCustomizer($writer);
  25. }
  26. $writer->save($filename);
  27. $reader = IOFactory::createReader($format);
  28. if ($readerCustomizer) {
  29. $readerCustomizer($reader);
  30. }
  31. $reloadedSpreadsheet = $reader->load($filename);
  32. unlink($filename);
  33. return $reloadedSpreadsheet;
  34. }
  35. }