| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 17:18:12 +00:00
										 |  |  | namespace PhpOffice\PhpSpreadsheetTests\Worksheet; | 
					
						
							| 
									
										
										
										
											2016-03-22 14:35:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 17:18:12 +00:00
										 |  |  | use PhpOffice\PhpSpreadsheet\Worksheet; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Worksheet\Row; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Worksheet\RowIterator; | 
					
						
							| 
									
										
										
										
											2016-08-14 04:08:43 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-22 14:35:50 +00:00
										 |  |  | class RowIteratorTest extends \PHPUnit_Framework_TestCase | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  | { | 
					
						
							|  |  |  |     public $mockWorksheet; | 
					
						
							|  |  |  |     public $mockRow; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-17 13:00:02 +00:00
										 |  |  |     public function setUp() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-08-14 04:08:43 +00:00
										 |  |  |         $this->mockRow = $this->getMockBuilder(Row::class) | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |             ->disableOriginalConstructor() | 
					
						
							|  |  |  |             ->getMock(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-14 04:08:43 +00:00
										 |  |  |         $this->mockWorksheet = $this->getMockBuilder(Worksheet::class) | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |             ->disableOriginalConstructor() | 
					
						
							|  |  |  |             ->getMock(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->mockWorksheet->expects($this->any()) | 
					
						
							| 
									
										
										
										
											2017-01-05 03:26:20 +00:00
										 |  |  |             ->method('getHighestRow') | 
					
						
							|  |  |  |             ->will($this->returnValue(5)); | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-17 13:00:02 +00:00
										 |  |  |     public function testIteratorFullRange() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-08-14 04:08:43 +00:00
										 |  |  |         $iterator = new RowIterator($this->mockWorksheet); | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |         $rowIndexResult = 1; | 
					
						
							|  |  |  |         $this->assertEquals($rowIndexResult, $iterator->key()); | 
					
						
							| 
									
										
										
										
											2016-08-14 04:08:43 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-17 13:00:02 +00:00
										 |  |  |         foreach ($iterator as $key => $row) { | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |             $this->assertEquals($rowIndexResult++, $key); | 
					
						
							| 
									
										
										
										
											2016-08-14 04:08:43 +00:00
										 |  |  |             $this->assertInstanceOf(Row::class, $row); | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-05-17 13:00:02 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-17 13:00:02 +00:00
										 |  |  |     public function testIteratorStartEndRange() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-08-14 04:08:43 +00:00
										 |  |  |         $iterator = new RowIterator($this->mockWorksheet, 2, 4); | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |         $rowIndexResult = 2; | 
					
						
							|  |  |  |         $this->assertEquals($rowIndexResult, $iterator->key()); | 
					
						
							| 
									
										
										
										
											2016-08-14 04:08:43 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-17 13:00:02 +00:00
										 |  |  |         foreach ($iterator as $key => $row) { | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |             $this->assertEquals($rowIndexResult++, $key); | 
					
						
							| 
									
										
										
										
											2016-08-14 04:08:43 +00:00
										 |  |  |             $this->assertInstanceOf(Row::class, $row); | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-05-17 13:00:02 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-17 13:00:02 +00:00
										 |  |  |     public function testIteratorSeekAndPrev() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-08-14 04:08:43 +00:00
										 |  |  |         $iterator = new RowIterator($this->mockWorksheet, 2, 4); | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |         $columnIndexResult = 4; | 
					
						
							|  |  |  |         $iterator->seek(4); | 
					
						
							| 
									
										
										
										
											2015-04-26 12:00:58 +00:00
										 |  |  |         $this->assertEquals($columnIndexResult, $iterator->key()); | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-16 15:33:57 +00:00
										 |  |  |         for ($i = 1; $i < $columnIndexResult - 1; ++$i) { | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |             $iterator->prev(); | 
					
						
							|  |  |  |             $this->assertEquals($columnIndexResult - $i, $iterator->key()); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-05-17 13:00:02 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-08-31 17:18:12 +00:00
										 |  |  |      * @expectedException \PhpOffice\PhpSpreadsheet\Exception | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |      */ | 
					
						
							|  |  |  |     public function testSeekOutOfRange() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-08-14 04:08:43 +00:00
										 |  |  |         $iterator = new RowIterator($this->mockWorksheet, 2, 4); | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |         $iterator->seek(1); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-08-31 17:18:12 +00:00
										 |  |  |      * @expectedException \PhpOffice\PhpSpreadsheet\Exception | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |      */ | 
					
						
							|  |  |  |     public function testPrevOutOfRange() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-08-14 04:08:43 +00:00
										 |  |  |         $iterator = new RowIterator($this->mockWorksheet, 2, 4); | 
					
						
							| 
									
										
										
										
											2015-04-25 20:49:30 +00:00
										 |  |  |         $iterator->prev(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |