| 
									
										
										
										
											2012-10-25 10:44:47 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AdvancedValueBinderTest extends PHPUnit_Framework_TestCase | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     public function setUp() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (!defined('PHPEXCEL_ROOT')) { | 
					
						
							|  |  |  |             define('PHPEXCEL_ROOT', APPLICATION_PATH . '/'); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function provider() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (!class_exists('PHPExcel_Style_NumberFormat')) { | 
					
						
							|  |  |  |           $this->setUp(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         $currencyUSD = PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE; | 
					
						
							|  |  |  |         $currencyEURO = str_replace('$', '€', PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_USD_SIMPLE); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return array( | 
					
						
							|  |  |  |           array('10%', 0.1, PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00, ',', '.', '$'), | 
					
						
							|  |  |  |           array('$10.11', 10.11, $currencyUSD, ',', '.', '$'), | 
					
						
							|  |  |  |           array('$1,010.12', 1010.12, $currencyUSD, ',', '.', '$'), | 
					
						
							|  |  |  |           array('$20,20', 20.2, $currencyUSD, '.', ',', '$'), | 
					
						
							|  |  |  |           array('$2.020,20', 2020.2, $currencyUSD, '.', ',', '$'), | 
					
						
							|  |  |  |           array('€2.020,20', 2020.2, $currencyEURO, '.', ',', '€'), | 
					
						
							|  |  |  |           array('€ 2.020,20', 2020.2, $currencyEURO, '.', ',', '€'), | 
					
						
							|  |  |  |           array('€2,020.22', 2020.22, $currencyEURO, ',', '.', '€'), | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @dataProvider provider | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function testCurrency($value, $valueBinded, $format, $thousandsSeparator, $decimalSeparator, $currencyCode) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2013-02-21 11:29:32 +00:00
										 |  |  |         $sheet = $this->getMock( | 
					
						
							|  |  |  | 			'PHPExcel_Worksheet',  | 
					
						
							|  |  |  | 			array('getStyle', 'getNumberFormat', 'setFormatCode','getCellCacheController') | 
					
						
							|  |  |  | 		); | 
					
						
							|  |  |  |         $cache = $this->getMockBuilder('PHPExcel_CachedObjectStorage_Memory') | 
					
						
							|  |  |  |         	->disableOriginalConstructor() | 
					
						
							|  |  |  |         	->getMock(); | 
					
						
							|  |  |  |         $cache->expects($this->any()) | 
					
						
							|  |  |  |                  ->method('getParent') | 
					
						
							|  |  |  |                  ->will($this->returnValue($sheet)); | 
					
						
							| 
									
										
										
										
											2012-10-25 10:44:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $sheet->expects($this->once()) | 
					
						
							|  |  |  |                  ->method('getStyle') | 
					
						
							|  |  |  |                  ->will($this->returnSelf()); | 
					
						
							|  |  |  |         $sheet->expects($this->once()) | 
					
						
							|  |  |  |                  ->method('getNumberFormat') | 
					
						
							|  |  |  |                  ->will($this->returnSelf()); | 
					
						
							|  |  |  |         $sheet->expects($this->once()) | 
					
						
							|  |  |  |                  ->method('setFormatCode') | 
					
						
							|  |  |  |                  ->with($format) | 
					
						
							|  |  |  |                  ->will($this->returnSelf()); | 
					
						
							| 
									
										
										
										
											2013-02-21 11:29:32 +00:00
										 |  |  |         $sheet->expects($this->any()) | 
					
						
							|  |  |  |                  ->method('getCellCacheController') | 
					
						
							|  |  |  |                  ->will($this->returnValue($cache)); | 
					
						
							| 
									
										
										
										
											2012-10-25 10:44:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         PHPExcel_Shared_String::setCurrencyCode($currencyCode); | 
					
						
							|  |  |  |         PHPExcel_Shared_String::setDecimalSeparator($decimalSeparator); | 
					
						
							|  |  |  |         PHPExcel_Shared_String::setThousandsSeparator($thousandsSeparator); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-21 11:29:32 +00:00
										 |  |  |         $cell = new PHPExcel_Cell(NULL, PHPExcel_Cell_DataType::TYPE_STRING, $sheet); | 
					
						
							| 
									
										
										
										
											2012-10-25 10:44:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $binder = new PHPExcel_Cell_AdvancedValueBinder(); | 
					
						
							|  |  |  |         $binder->bindValue($cell, $value); | 
					
						
							|  |  |  |         $this->assertEquals($valueBinded, $cell->getValue()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |