FloatsRetainedTest.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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\Spreadsheet;
  6. use PhpOffice\PhpSpreadsheet\Writer\Xlsx as Writer;
  7. use PHPUnit\Framework\TestCase;
  8. class FloatsRetainedTest extends TestCase
  9. {
  10. /**
  11. * @dataProvider providerIntyFloatsRetainedByWriter
  12. *
  13. * @param float|int $value
  14. */
  15. public function testIntyFloatsRetainedByWriter($value): void
  16. {
  17. $outputFilename = File::temporaryFilename();
  18. $sheet = new Spreadsheet();
  19. $sheet->getActiveSheet()->getCell('A1')->setValue($value);
  20. $writer = new Writer($sheet);
  21. $writer->save($outputFilename);
  22. $reader = new Reader();
  23. $sheet = $reader->load($outputFilename);
  24. unlink($outputFilename);
  25. self::assertSame($value, $sheet->getActiveSheet()->getCell('A1')->getValue());
  26. }
  27. public function providerIntyFloatsRetainedByWriter(): array
  28. {
  29. return [
  30. [-1.0],
  31. [-1],
  32. [0.0],
  33. [0],
  34. [1.0],
  35. [1],
  36. [1e-3],
  37. [1.3e-10],
  38. [1e10],
  39. [3.00000000000000000001],
  40. [99999999999999999],
  41. [99999999999999999.0],
  42. [999999999999999999999999999999999999999999],
  43. [999999999999999999999999999999999999999999.0],
  44. ];
  45. }
  46. }