<?php namespace PhpOffice\PhpSpreadsheetTests\Functional; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PHPUnit\Framework\TestCase; class StreamTest extends TestCase { public function providerFormats(): array { $providerFormats = [ ['Xls'], ['Xlsx'], ['Ods'], ['Csv'], ['Html'], ['Mpdf'], ]; if (\PHP_VERSION_ID < 80000) { $providerFormats = array_merge( $providerFormats, [['Tcpdf'], ['Dompdf']] ); } return $providerFormats; } /** * @dataProvider providerFormats */ public function testAllWritersCanWriteToStream(string $format): void { $spreadsheet = new Spreadsheet(); $spreadsheet->getActiveSheet()->setCellValue('A1', 'foo'); $writer = IOFactory::createWriter($spreadsheet, $format); $stream = fopen('php://memory', 'wb+'); self::assertSame(0, fstat($stream)['size']); $writer->save($stream); self::assertIsResource($stream, 'should not close the stream for further usage out of PhpSpreadsheet'); self::assertGreaterThan(0, fstat($stream)['size'], 'something should have been written to the stream'); self::assertGreaterThan(0, ftell($stream), 'should not be rewinded, because not all streams support it'); } }