76 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?php | ||
|  | 
 | ||
|  | namespace PhpOffice\PhpSpreadsheetTests\Worksheet; | ||
|  | 
 | ||
|  | use PhpOffice\PhpSpreadsheet\Spreadsheet; | ||
|  | use PhpOffice\PhpSpreadsheet\Worksheet\RowCellIterator; | ||
|  | use PHPUnit\Framework\TestCase; | ||
|  | 
 | ||
|  | class RowCellIterator2Test extends TestCase | ||
|  | { | ||
|  |     /** | ||
|  |      * @dataProvider providerExistingCell | ||
|  |      */ | ||
|  |     public function testEndRangeTrue(?bool $existing, string $expectedResultFirst, string $expectedResultLast): void | ||
|  |     { | ||
|  |         $spreadsheet = new Spreadsheet(); | ||
|  |         $sheet = $spreadsheet->getActiveSheet(); | ||
|  |         $sheet->getCell('C2')->setValue('cellb2'); | ||
|  |         $sheet->getCell('F2')->setValue('cellf2'); | ||
|  | 
 | ||
|  |         $iterator = new RowCellIterator($sheet, 2, 'B', 'H'); | ||
|  |         if (isset($existing)) { | ||
|  |             $iterator->setIterateOnlyExistingCells($existing); | ||
|  |         } | ||
|  |         $lastCoordinate = ''; | ||
|  |         $firstCoordinate = ''; | ||
|  |         foreach ($iterator as $cell) { | ||
|  |             $lastCoordinate = $cell->getCoordinate(); | ||
|  |             if (!$firstCoordinate) { | ||
|  |                 $firstCoordinate = $lastCoordinate; | ||
|  |             } | ||
|  |         } | ||
|  |         self::assertEquals($expectedResultFirst, $firstCoordinate); | ||
|  |         self::assertEquals($expectedResultLast, $lastCoordinate); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function providerExistingCell(): array | ||
|  |     { | ||
|  |         return [ | ||
|  |             [null, 'B2', 'H2'], | ||
|  |             [false, 'B2', 'H2'], | ||
|  |             [true, 'C2', 'F2'], | ||
|  |         ]; | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @dataProvider providerEmptyRow | ||
|  |      */ | ||
|  |     public function testEmptyRow(?bool $existing, int $expectedResult): void | ||
|  |     { | ||
|  |         $spreadsheet = new Spreadsheet(); | ||
|  |         $sheet = $spreadsheet->getActiveSheet(); | ||
|  |         $sheet->getCell('B2')->setValue('cellb2'); | ||
|  |         $sheet->getCell('F2')->setValue('cellf2'); | ||
|  | 
 | ||
|  |         $iterator = new RowCellIterator($sheet, '3'); | ||
|  |         if (isset($existing)) { | ||
|  |             $iterator->setIterateOnlyExistingCells($existing); | ||
|  |         } | ||
|  |         $numCells = 0; | ||
|  |         foreach ($iterator as $cell) { | ||
|  |             ++$numCells; | ||
|  |         } | ||
|  |         self::assertEquals($expectedResult, $numCells); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function providerEmptyRow(): array | ||
|  |     { | ||
|  |         return [ | ||
|  |             [null, 6], | ||
|  |             [false, 6], | ||
|  |             [true, 0], | ||
|  |         ]; | ||
|  |     } | ||
|  | } |