| 
									
										
										
										
											2018-07-15 03:19:54 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace PhpOffice\PhpSpreadsheetTests\Style; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Spreadsheet; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Style\Border; | 
					
						
							|  |  |  | use PhpOffice\PhpSpreadsheet\Style\Color; | 
					
						
							|  |  |  | use PHPUnit\Framework\TestCase; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BorderRangeTest extends TestCase | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |     public function testBorderRangeInAction(): void | 
					
						
							| 
									
										
										
										
											2018-07-15 03:19:54 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         // testcase for the initial bug problem: setting border+color fails
 | 
					
						
							|  |  |  |         // set red borders aroundlA1:B3 square. Verify that the borders set are actually correct
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $spreadsheet = new Spreadsheet(); | 
					
						
							|  |  |  |         $sheet = $spreadsheet->getActiveSheet(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $argb = 'FFFF0000'; | 
					
						
							|  |  |  |         $color = new Color($argb); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $sheet->getStyle('A1:C1')->getBorders()->getTop()->setBorderStyle(Border::BORDER_THIN)->setColor($color); | 
					
						
							|  |  |  |         $sheet->getStyle('A1:A3')->getBorders()->getLeft()->setBorderStyle(Border::BORDER_THIN)->setColor($color); | 
					
						
							|  |  |  |         $sheet->getStyle('C1:C3')->getBorders()->getRight()->setBorderStyle(Border::BORDER_THIN)->setColor($color); | 
					
						
							|  |  |  |         $sheet->getStyle('A3:C3')->getBorders()->getBottom()->setBorderStyle(Border::BORDER_THIN)->setColor($color); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // upper row
 | 
					
						
							|  |  |  |         $expectations = [ | 
					
						
							|  |  |  |             // cell => Left/Right/Top/Bottom
 | 
					
						
							|  |  |  |             'A1' => 'LT', | 
					
						
							|  |  |  |             'B1' => 'T', | 
					
						
							|  |  |  |             'C1' => 'RT', | 
					
						
							|  |  |  |             'A2' => 'L', | 
					
						
							|  |  |  |             'B2' => '', | 
					
						
							|  |  |  |             'C2' => 'R', | 
					
						
							|  |  |  |             'A3' => 'LB', | 
					
						
							|  |  |  |             'B3' => 'B', | 
					
						
							|  |  |  |             'C3' => 'RB', | 
					
						
							|  |  |  |         ]; | 
					
						
							|  |  |  |         $sides = [ | 
					
						
							|  |  |  |             'L' => 'Left', | 
					
						
							|  |  |  |             'R' => 'Right', | 
					
						
							|  |  |  |             'T' => 'Top', | 
					
						
							|  |  |  |             'B' => 'Bottom', | 
					
						
							|  |  |  |         ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         foreach ($expectations as $cell => $borders) { | 
					
						
							|  |  |  |             $bs = $sheet->getStyle($cell)->getBorders(); | 
					
						
							|  |  |  |             foreach ($sides as $sidekey => $side) { | 
					
						
							|  |  |  |                 $assertion = "setBorderStyle on a range of cells, $cell $side"; | 
					
						
							|  |  |  |                 $func = "get$side"; | 
					
						
							|  |  |  |                 $b = $bs->$func(); // boo
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 if (strpos($borders, $sidekey) === false) { | 
					
						
							|  |  |  |                     self::assertSame(Border::BORDER_NONE, $b->getBorderStyle(), $assertion); | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     self::assertSame(Border::BORDER_THIN, $b->getBorderStyle(), $assertion); | 
					
						
							|  |  |  |                     self::assertSame($argb, $b->getColor()->getARGB(), $assertion); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-18 04:49:57 +00:00
										 |  |  |     public function testBorderRangeDirectly(): void | 
					
						
							| 
									
										
										
										
											2018-07-15 03:19:54 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         // testcase for the underlying problem directly
 | 
					
						
							|  |  |  |         $spreadsheet = new Spreadsheet(); | 
					
						
							|  |  |  |         $sheet = $spreadsheet->getActiveSheet(); | 
					
						
							|  |  |  |         $style = $sheet->getStyle('A1:C1')->getBorders()->getTop()->setBorderStyle(Border::BORDER_THIN); | 
					
						
							|  |  |  |         self::assertSame('A1:C1', $style->getSelectedCells(), 'getSelectedCells should not change after a style operation on a border range'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |