2012-10-25 10:44:47 +00:00
|
|
|
<?php
|
|
|
|
|
2016-08-31 17:18:12 +00:00
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Cell;
|
2016-03-22 14:35:50 +00:00
|
|
|
|
2016-08-31 17:18:12 +00:00
|
|
|
use PhpOffice\PhpSpreadsheet\CachedObjectStorage\Memory;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Cell;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Cell\DataType;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Shared\StringHelper;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Worksheet;
|
2016-08-14 04:08:43 +00:00
|
|
|
|
2016-03-22 14:35:50 +00:00
|
|
|
class AdvancedValueBinderTest extends \PHPUnit_Framework_TestCase
|
2012-10-25 10:44:47 +00:00
|
|
|
{
|
|
|
|
public function provider()
|
|
|
|
{
|
2016-08-14 04:08:43 +00:00
|
|
|
$currencyUSD = NumberFormat::FORMAT_CURRENCY_USD_SIMPLE;
|
|
|
|
$currencyEURO = str_replace('$', '€', NumberFormat::FORMAT_CURRENCY_USD_SIMPLE);
|
2012-10-25 10:44:47 +00:00
|
|
|
|
2016-08-16 15:33:57 +00:00
|
|
|
return [
|
|
|
|
['10%', 0.1, NumberFormat::FORMAT_PERCENTAGE_00, ',', '.', '$'],
|
|
|
|
['$10.11', 10.11, $currencyUSD, ',', '.', '$'],
|
|
|
|
['$1,010.12', 1010.12, $currencyUSD, ',', '.', '$'],
|
|
|
|
['$20,20', 20.2, $currencyUSD, '.', ',', '$'],
|
|
|
|
['$2.020,20', 2020.2, $currencyUSD, '.', ',', '$'],
|
|
|
|
['€2.020,20', 2020.2, $currencyEURO, '.', ',', '€'],
|
|
|
|
['€ 2.020,20', 2020.2, $currencyEURO, '.', ',', '€'],
|
|
|
|
['€2,020.22', 2020.22, $currencyEURO, ',', '.', '€'],
|
|
|
|
];
|
2012-10-25 10:44:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @dataProvider provider
|
2016-12-22 14:43:37 +00:00
|
|
|
*
|
|
|
|
* @param mixed $value
|
|
|
|
* @param mixed $valueBinded
|
|
|
|
* @param mixed $format
|
|
|
|
* @param mixed $thousandsSeparator
|
|
|
|
* @param mixed $decimalSeparator
|
|
|
|
* @param mixed $currencyCode
|
2012-10-25 10:44:47 +00:00
|
|
|
*/
|
|
|
|
public function testCurrency($value, $valueBinded, $format, $thousandsSeparator, $decimalSeparator, $currencyCode)
|
|
|
|
{
|
2017-01-05 03:26:20 +00:00
|
|
|
$sheet = $this->getMock(Worksheet::class, ['getStyle', 'getNumberFormat', 'setFormatCode', 'getCellCacheController']);
|
2016-08-14 04:08:43 +00:00
|
|
|
$cache = $this->getMockBuilder(Memory::class)
|
2015-05-17 13:00:02 +00:00
|
|
|
->disableOriginalConstructor()
|
|
|
|
->getMock();
|
2013-02-21 11:29:32 +00:00
|
|
|
$cache->expects($this->any())
|
2017-01-05 03:26:20 +00:00
|
|
|
->method('getParent')
|
|
|
|
->will($this->returnValue($sheet));
|
2012-10-25 10:44:47 +00:00
|
|
|
|
|
|
|
$sheet->expects($this->once())
|
2017-01-05 03:26:20 +00:00
|
|
|
->method('getStyle')
|
|
|
|
->will($this->returnSelf());
|
2012-10-25 10:44:47 +00:00
|
|
|
$sheet->expects($this->once())
|
2017-01-05 03:26:20 +00:00
|
|
|
->method('getNumberFormat')
|
|
|
|
->will($this->returnSelf());
|
2012-10-25 10:44:47 +00:00
|
|
|
$sheet->expects($this->once())
|
2017-01-05 03:26:20 +00:00
|
|
|
->method('setFormatCode')
|
|
|
|
->with($format)
|
|
|
|
->will($this->returnSelf());
|
2013-02-21 11:29:32 +00:00
|
|
|
$sheet->expects($this->any())
|
2017-01-05 03:26:20 +00:00
|
|
|
->method('getCellCacheController')
|
|
|
|
->will($this->returnValue($cache));
|
2012-10-25 10:44:47 +00:00
|
|
|
|
2016-08-14 04:08:43 +00:00
|
|
|
StringHelper::setCurrencyCode($currencyCode);
|
|
|
|
StringHelper::setDecimalSeparator($decimalSeparator);
|
|
|
|
StringHelper::setThousandsSeparator($thousandsSeparator);
|
2012-10-25 10:44:47 +00:00
|
|
|
|
2016-08-14 04:08:43 +00:00
|
|
|
$cell = new Cell(null, DataType::TYPE_STRING, $sheet);
|
2012-10-25 10:44:47 +00:00
|
|
|
|
2016-08-14 04:08:43 +00:00
|
|
|
$binder = new AdvancedValueBinder();
|
2012-10-25 10:44:47 +00:00
|
|
|
$binder->bindValue($cell, $value);
|
|
|
|
$this->assertEquals($valueBinded, $cell->getValue());
|
|
|
|
}
|
2015-05-17 16:34:30 +00:00
|
|
|
}
|