74 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			74 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?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
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    public function testBorderRangeInAction()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        // 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);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testBorderRangeDirectly()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        // 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');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |