60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace PhpOffice\PhpSpreadsheetTests\Writer\Xlsx;
 | 
						|
 | 
						|
use PHPUnit\Framework\TestCase;
 | 
						|
 | 
						|
class LocaleFloatsTest extends TestCase
 | 
						|
{
 | 
						|
    protected $localeAdjusted;
 | 
						|
 | 
						|
    protected $currentLocale;
 | 
						|
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $this->currentLocale = setlocale(LC_ALL, '0');
 | 
						|
 | 
						|
        if (!setlocale(LC_ALL, 'fr_FR.UTF-8', 'fra_fra')) {
 | 
						|
            $this->localeAdjusted = false;
 | 
						|
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        $this->localeAdjusted = true;
 | 
						|
    }
 | 
						|
 | 
						|
    protected function tearDown(): void
 | 
						|
    {
 | 
						|
        if ($this->localeAdjusted) {
 | 
						|
            setlocale(LC_ALL, $this->currentLocale);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function testLocaleFloatsCorrectlyConvertedByWriter(): void
 | 
						|
    {
 | 
						|
        if (!$this->localeAdjusted) {
 | 
						|
            self::markTestSkipped('Unable to set locale for testing.');
 | 
						|
        }
 | 
						|
 | 
						|
        $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
 | 
						|
        $spreadsheet->getActiveSheet()->setCellValue('A1', 1.1);
 | 
						|
 | 
						|
        $filename = 'decimalcomma.xlsx';
 | 
						|
        $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
 | 
						|
        $writer->save($filename);
 | 
						|
 | 
						|
        $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
 | 
						|
        $spreadsheet = $reader->load($filename);
 | 
						|
        unlink($filename);
 | 
						|
 | 
						|
        $result = $spreadsheet->getActiveSheet()->getCell('A1')->getValue();
 | 
						|
 | 
						|
        ob_start();
 | 
						|
        var_dump($result);
 | 
						|
        preg_match('/(?:double|float)\(([^\)]+)\)/mui', ob_get_clean(), $matches);
 | 
						|
        self::assertArrayHasKey(1, $matches);
 | 
						|
        $actual = $matches[1];
 | 
						|
        self::assertEquals('1,1', $actual);
 | 
						|
    }
 | 
						|
}
 |