| 
									
										
										
										
											2017-12-17 07:34:40 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace PhpOffice\PhpSpreadsheetTests\Functional; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Spreadsheet; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-01 15:53:28 +00:00
										 |  |  | class FreezePaneTest extends AbstractFunctional | 
					
						
							| 
									
										
										
										
											2017-12-17 07:34:40 +00:00
										 |  |  | { | 
					
						
							|  |  |  |     public function providerFormats() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return [ | 
					
						
							|  |  |  |             ['Xls'], | 
					
						
							|  |  |  |             ['Xlsx'], | 
					
						
							|  |  |  |         ]; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @dataProvider providerFormats | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $format | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function testFreezePane($format) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2018-01-08 15:42:30 +00:00
										 |  |  |         $cellSplit = 'B4'; | 
					
						
							|  |  |  |         $topLeftCell = 'E7'; | 
					
						
							| 
									
										
										
										
											2017-12-17 07:34:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $spreadsheet = new Spreadsheet(); | 
					
						
							|  |  |  |         $spreadsheet->getActiveSheet()->freezePane($cellSplit, $topLeftCell); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, $format); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // Read written file
 | 
					
						
							|  |  |  |         $reloadedActive = $reloadedSpreadsheet->getActiveSheet(); | 
					
						
							|  |  |  |         $actualCellSplit = $reloadedActive->getFreezePane(); | 
					
						
							|  |  |  |         $actualTopLeftCell = $reloadedActive->getTopLeftCell(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self::assertSame($cellSplit, $actualCellSplit, 'should be able to set freeze pane'); | 
					
						
							|  |  |  |         self::assertSame($topLeftCell, $actualTopLeftCell, 'should be able to set the top left cell'); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-06-06 02:36:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     public function providerFormatsInvalidSelectedCells() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return [ | 
					
						
							|  |  |  |             ['Xlsx'], | 
					
						
							|  |  |  |         ]; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @dataProvider providerFormatsInvalidSelectedCells | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $format | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function testFreezePaneWithInvalidSelectedCells($format) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $cellSplit = 'A7'; | 
					
						
							|  |  |  |         $topLeftCell = 'A24'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $spreadsheet = new Spreadsheet(); | 
					
						
							|  |  |  |         $worksheet = $spreadsheet->getActiveSheet(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $worksheet->freezePane('A7', 'A24'); | 
					
						
							|  |  |  |         $worksheet->setSelectedCells('F5'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, $format); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // Read written file
 | 
					
						
							|  |  |  |         $reloadedActive = $reloadedSpreadsheet->getActiveSheet(); | 
					
						
							|  |  |  |         $actualCellSplit = $reloadedActive->getFreezePane(); | 
					
						
							|  |  |  |         $actualTopLeftCell = $reloadedActive->getTopLeftCell(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self::assertSame($cellSplit, $actualCellSplit, 'should be able to set freeze pane'); | 
					
						
							|  |  |  |         self::assertSame($topLeftCell, $actualTopLeftCell, 'should be able to set the top left cell'); | 
					
						
							|  |  |  |         self::assertSame('A24', $reloadedActive->getSelectedCells(), 'selected cell should default to be first cell after the freeze pane'); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2017-12-17 07:34:40 +00:00
										 |  |  | } |