 61f5baac4a
			
		
	
	
		61f5baac4a
		
	
	
	
	
		
			
			Personally, I don't call it a bug if people pass invalid arguments and it complains with an exception; but I've made some basic changes to support DateTime objects and objects with a __toString() method... Any other objects will throw a catchable fatal error, and it's up to user code to implement any exception handler to convert it to an exception and handle it
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| require_once 'testDataFileIterator.php';
 | |
| 
 | |
| class DefaultValueBinderTest extends PHPUnit_Framework_TestCase
 | |
| {
 | |
|     protected $cellStub;
 | |
| 
 | |
|     public function setUp()
 | |
|     {
 | |
|         if (!defined('PHPEXCEL_ROOT'))
 | |
|         {
 | |
|             define('PHPEXCEL_ROOT', APPLICATION_PATH . '/');
 | |
|         }
 | |
|         require_once(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php');
 | |
| 	}
 | |
| 
 | |
|     protected function createCellStub()
 | |
|     {
 | |
|         // Create a stub for the Cell class.
 | |
|         $this->cellStub = $this->getMockBuilder('PHPExcel_Cell')
 | |
|             ->disableOriginalConstructor()
 | |
|             ->getMock();
 | |
|         // Configure the stub.
 | |
|         $this->cellStub->expects($this->any())
 | |
|              ->method('setValueExplicit')
 | |
|              ->will($this->returnValue(true));
 | |
| 
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dataProvider binderProvider
 | |
|      */
 | |
|     public function testBindValue($value)
 | |
| 	{
 | |
| 		$this->createCellStub();
 | |
|         $binder = new PHPExcel_Cell_DefaultValueBinder();
 | |
| 		$result = $binder->bindValue($this->cellStub, $value);
 | |
| 		$this->assertTrue($result);
 | |
| 	}
 | |
| 
 | |
|     public function binderProvider()
 | |
|     {
 | |
|         return array(
 | |
|             array(null),
 | |
|             array(''),
 | |
|             array('ABC'),
 | |
|             array('=SUM(A1:B2)'),
 | |
|             array(true),
 | |
|             array(false),
 | |
|             array(123),
 | |
|             array(-123.456),
 | |
|             array('123'),
 | |
|             array('-123.456'),
 | |
|             array('#REF!'),
 | |
|             array(new DateTime()),
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dataProvider providerDataTypeForValue
 | |
|      */
 | |
| 	public function testDataTypeForValue()
 | |
| 	{
 | |
| 		$args = func_get_args();
 | |
| 		$expectedResult = array_pop($args);
 | |
| 		$result = call_user_func_array(array('PHPExcel_Cell_DefaultValueBinder','dataTypeForValue'), $args);
 | |
| 		$this->assertEquals($expectedResult, $result);
 | |
| 	}
 | |
| 
 | |
|     public function providerDataTypeForValue()
 | |
|     {
 | |
|     	return new testDataFileIterator('rawTestData/Cell/DefaultValueBinder.data');
 | |
| 	}
 | |
| 
 | |
| 	public function testDataTypeForRichTextObject()
 | |
| 	{
 | |
|         $objRichText = new PHPExcel_RichText();
 | |
|         $objRichText->createText('Hello World');
 | |
| 
 | |
|         $expectedResult = PHPExcel_Cell_DataType::TYPE_INLINE;
 | |
| 		$result = call_user_func(array('PHPExcel_Cell_DefaultValueBinder','dataTypeForValue'), $objRichText);
 | |
| 		$this->assertEquals($expectedResult, $result);
 | |
| 	}
 | |
| }
 |