| 
									
										
										
										
											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\Cell; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Cell\DataType; | 
					
						
							| 
									
										
										
										
											2017-04-14 05:22:33 +00:00
										 |  |  | use PhpOffice\PhpSpreadsheet\Collection\Cells; | 
					
						
							| 
									
										
										
										
											2016-08-31 17:18:12 +00:00
										 |  |  | use PhpOffice\PhpSpreadsheet\Shared\StringHelper; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Style\NumberFormat; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Worksheet; | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +00:00
										 |  |  | use PHPUnit_Framework_TestCase; | 
					
						
							| 
									
										
										
										
											2016-08-14 04:08:43 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-17 22:02:17 +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-23 07:02:59 +00:00
										 |  |  |         $sheet = $this->getMockBuilder(Worksheet::class) | 
					
						
							| 
									
										
										
										
											2017-04-14 05:22:33 +00:00
										 |  |  |             ->setMethods(['getStyle', 'getNumberFormat', 'setFormatCode', 'getCellCollection']) | 
					
						
							| 
									
										
										
										
											2017-01-23 07:02:59 +00:00
										 |  |  |             ->getMock(); | 
					
						
							| 
									
										
										
										
											2017-04-14 05:22:33 +00:00
										 |  |  |         $cellCollection = $this->getMockBuilder(Cells::class) | 
					
						
							| 
									
										
										
										
											2015-05-17 13:00:02 +00:00
										 |  |  |             ->disableOriginalConstructor() | 
					
						
							|  |  |  |             ->getMock(); | 
					
						
							| 
									
										
										
										
											2017-04-14 05:22:33 +00:00
										 |  |  |         $cellCollection->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-04-14 05:22:33 +00:00
										 |  |  |             ->method('getCellCollection') | 
					
						
							|  |  |  |             ->will($this->returnValue($cellCollection)); | 
					
						
							| 
									
										
										
										
											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
										 |  |  | } |