111 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			111 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace PhpOffice\PhpSpreadsheetTests\Reader\Html;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use PhpOffice\PhpSpreadsheet\Reader\Html;
							 | 
						||
| 
								 | 
							
								use PhpOffice\PhpSpreadsheet\Style\Border;
							 | 
						||
| 
								 | 
							
								use PHPUnit\Framework\TestCase;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class HtmlBorderTest extends TestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    public function testCanApplyInlineBordersStyles(): void
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $html = '<table>
							 | 
						||
| 
								 | 
							
								                    <tr>
							 | 
						||
| 
								 | 
							
								                        <td style="border: 1px solid #333333;">Thin border</td>
							 | 
						||
| 
								 | 
							
								                        <td style="border-bottom: 1px dashed #333333;">Border bottom</td>
							 | 
						||
| 
								 | 
							
								                        <td style="border-top: 1px solid #333333;">Border top</td>
							 | 
						||
| 
								 | 
							
								                        <td style="border-left: 1px solid green;">Border left</td>
							 | 
						||
| 
								 | 
							
								                        <td style="border-right: 1px solid #333333;">Border right</td>
							 | 
						||
| 
								 | 
							
								                        <td style="border: none"></td>
							 | 
						||
| 
								 | 
							
								                    </tr>
							 | 
						||
| 
								 | 
							
								                </table>';
							 | 
						||
| 
								 | 
							
								        $filename = HtmlHelper::createHtml($html);
							 | 
						||
| 
								 | 
							
								        $spreadsheet = HtmlHelper::loadHtmlIntoSpreadsheet($filename, true);
							 | 
						||
| 
								 | 
							
								        $firstSheet = $spreadsheet->getSheet(0);
							 | 
						||
| 
								 | 
							
								        $style = $firstSheet->getCell('A1')->getStyle();
							 | 
						||
| 
								 | 
							
								        $borders = $style->getBorders();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        /** @var Border $border */
							 | 
						||
| 
								 | 
							
								        foreach ([$borders->getTop(), $borders->getBottom(), $borders->getLeft(), $borders->getRight()] as $border) {
							 | 
						||
| 
								 | 
							
								            self::assertEquals('333333', $border->getColor()->getRGB());
							 | 
						||
| 
								 | 
							
								            self::assertEquals(Border::BORDER_THIN, $border->getBorderStyle());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $style = $firstSheet->getCell('B1')->getStyle();
							 | 
						||
| 
								 | 
							
								        $border = $style->getBorders()->getBottom();
							 | 
						||
| 
								 | 
							
								        self::assertEquals('333333', $border->getColor()->getRGB());
							 | 
						||
| 
								 | 
							
								        self::assertEquals(Border::BORDER_DASHED, $border->getBorderStyle());
							 | 
						||
| 
								 | 
							
								        self::assertEquals(Border::BORDER_NONE, $style->getBorders()->getTop()->getBorderStyle());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $style = $firstSheet->getCell('C1')->getStyle();
							 | 
						||
| 
								 | 
							
								        $border = $style->getBorders()->getTop();
							 | 
						||
| 
								 | 
							
								        self::assertEquals('333333', $border->getColor()->getRGB());
							 | 
						||
| 
								 | 
							
								        self::assertEquals(Border::BORDER_THIN, $border->getBorderStyle());
							 | 
						||
| 
								 | 
							
								        self::assertEquals(Border::BORDER_NONE, $style->getBorders()->getBottom()->getBorderStyle());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $style = $firstSheet->getCell('D1')->getStyle();
							 | 
						||
| 
								 | 
							
								        $border = $style->getBorders()->getLeft();
							 | 
						||
| 
								 | 
							
								        self::assertEquals('00ff00', $border->getColor()->getRGB());
							 | 
						||
| 
								 | 
							
								        self::assertEquals(Border::BORDER_THIN, $border->getBorderStyle());
							 | 
						||
| 
								 | 
							
								        self::assertEquals(Border::BORDER_NONE, $style->getBorders()->getBottom()->getBorderStyle());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $style = $firstSheet->getCell('E1')->getStyle();
							 | 
						||
| 
								 | 
							
								        $border = $style->getBorders()->getRight();
							 | 
						||
| 
								 | 
							
								        self::assertEquals('333333', $border->getColor()->getRGB());
							 | 
						||
| 
								 | 
							
								        self::assertEquals(Border::BORDER_THIN, $border->getBorderStyle());
							 | 
						||
| 
								 | 
							
								        self::assertEquals(Border::BORDER_NONE, $style->getBorders()->getBottom()->getBorderStyle());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $style = $firstSheet->getCell('F1')->getStyle();
							 | 
						||
| 
								 | 
							
								        $borders = $style->getBorders();
							 | 
						||
| 
								 | 
							
								        foreach ([$borders->getTop(), $borders->getBottom(), $borders->getLeft(), $borders->getRight()] as $border) {
							 | 
						||
| 
								 | 
							
								            self::assertEquals(Border::BORDER_NONE, $border->getBorderStyle());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @dataProvider providerBorderStyle
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testBorderStyle(string $style, string $expectedResult): void
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $borders = Html::getBorderMappings();
							 | 
						||
| 
								 | 
							
								        self::assertEquals($expectedResult, $borders[$style]);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testBorderStyleCoverage(): void
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $expected = Html::getBorderMappings();
							 | 
						||
| 
								 | 
							
								        $covered = [];
							 | 
						||
| 
								 | 
							
								        foreach ($expected as $key => $val) {
							 | 
						||
| 
								 | 
							
								            $covered[$key] = 0;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $tests = $this->providerBorderStyle();
							 | 
						||
| 
								 | 
							
								        foreach ($tests as $test) {
							 | 
						||
| 
								 | 
							
								            $covered[$test[0]] = 1;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        foreach ($covered as $key => $val) {
							 | 
						||
| 
								 | 
							
								            self::assertEquals(1, $val, "Borderstyle $key not tested");
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function providerBorderStyle(): array
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return [
							 | 
						||
| 
								 | 
							
								            ['dash-dot', Border::BORDER_DASHDOT],
							 | 
						||
| 
								 | 
							
								            ['dash-dot-dot', Border::BORDER_DASHDOTDOT],
							 | 
						||
| 
								 | 
							
								            ['dashed', Border::BORDER_DASHED],
							 | 
						||
| 
								 | 
							
								            ['dotted', Border::BORDER_DOTTED],
							 | 
						||
| 
								 | 
							
								            ['double', Border::BORDER_DOUBLE],
							 | 
						||
| 
								 | 
							
								            ['hair', Border::BORDER_HAIR],
							 | 
						||
| 
								 | 
							
								            ['medium', Border::BORDER_MEDIUM],
							 | 
						||
| 
								 | 
							
								            ['medium-dashed', Border::BORDER_MEDIUMDASHED],
							 | 
						||
| 
								 | 
							
								            ['medium-dash-dot', Border::BORDER_MEDIUMDASHDOT],
							 | 
						||
| 
								 | 
							
								            ['medium-dash-dot-dot', Border::BORDER_MEDIUMDASHDOTDOT],
							 | 
						||
| 
								 | 
							
								            ['none', Border::BORDER_NONE],
							 | 
						||
| 
								 | 
							
								            ['slant-dash-dot', Border::BORDER_SLANTDASHDOT],
							 | 
						||
| 
								 | 
							
								            ['solid', Border::BORDER_THIN],
							 | 
						||
| 
								 | 
							
								            ['thick', Border::BORDER_THICK],
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |