Failed Conditions
Push — master ( 5c643a...44c3bd )
by
unknown
19:29 queued 11:58
created

RichTextTest::testRichText()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 32
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 26
c 1
b 0
f 0
dl 0
loc 32
rs 9.504
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpOffice\PhpSpreadsheetTests\Writer\Xls;
6
7
use PhpOffice\PhpSpreadsheet\Reader\Xls as XlsReader;
8
use PhpOffice\PhpSpreadsheet\RichText\RichText;
9
use PhpOffice\PhpSpreadsheet\Shared\File;
10
use PhpOffice\PhpSpreadsheet\Spreadsheet;
11
use PhpOffice\PhpSpreadsheet\Writer\Xls as XlsWriter;
12
use PHPUnit\Framework\TestCase;
13
14
class RichTextTest extends TestCase
15
{
16
    private string $filename = '';
17
18
    protected function teardown(): void
19
    {
20
        if ($this->filename !== '') {
21
            unlink($this->filename);
22
        }
23
    }
24
25
    public function testRichText(): void
26
    {
27
        $spreadsheet = new Spreadsheet();
28
        $sheet = $spreadsheet->getActiveSheet();
29
        $rtf = new RichText();
30
        $rtf->createText('~Cell Style~');
31
        $rtf->createTextRun('~RTF Style~')->getFont()?->setItalic(true);
32
        $rtf->createText('~No Style~');
33
        $sheet->getCell('A1')->setValue($rtf);
34
        $sheet->getStyle('A1')->getFont()->setBold(true);
35
36
        $fontStyle = $sheet->getStyle('A1')->getFont();
37
        self::assertTrue($fontStyle->getBold());
38
        self::assertFalse($fontStyle->getItalic());
39
40
        $a1Value = $sheet->getCell('A1')->getValue();
41
        self::assertInstanceOf(RichText::class, $a1Value);
42
        $elements = $a1Value->getRichTextElements();
43
        self::assertCount(3, $elements);
44
        self::assertNull($elements[0]->getFont());
45
        $fontStyle = $elements[1]->getFont();
46
        self::assertNotNull($fontStyle);
47
        self::assertFalse($fontStyle->getBold());
48
        self::assertTrue($fontStyle->getItalic());
49
        self::assertNull($elements[0]->getFont());
50
51
        $this->filename = File::temporaryFilename();
52
        $writer = new XlsWriter($spreadsheet);
53
        $writer->save($this->filename);
54
        $spreadsheet->disconnectWorksheets();
55
56
        $this->readfile();
57
    }
58
59
    private function readfile(): void
60
    {
61
        $reader = new XlsReader();
62
        $spreadsheet = $reader->load($this->filename);
63
        $sheet = $spreadsheet->getActiveSheet();
64
        $fontStyle = $sheet->getStyle('A1')->getFont();
65
        self::assertTrue($fontStyle->getBold());
66
        self::assertFalse($fontStyle->getItalic());
67
68
        $a1Value = $sheet->getCell('A1')->getValue();
69
        self::assertInstanceOf(RichText::class, $a1Value);
70
        $elements = $a1Value->getRichTextElements();
71
        self::assertCount(3, $elements);
72
        // write/read has changed text to run but no real difference
73
        $fontStyle = $elements[0]->getFont();
74
        self::assertNotNull($fontStyle);
75
        self::assertTrue($fontStyle->getBold());
76
        self::assertFalse($fontStyle->getItalic());
77
        $fontStyle = $elements[1]->getFont();
78
        self::assertNotNull($fontStyle);
79
        self::assertFalse($fontStyle->getBold());
80
        self::assertTrue($fontStyle->getItalic());
81
        // write/read has changed text to run but no real difference
82
        $fontStyle = $elements[2]->getFont();
83
        self::assertNotNull($fontStyle);
84
        self::assertTrue($fontStyle->getBold());
85
        self::assertFalse($fontStyle->getItalic());
86
87
        $spreadsheet->disconnectWorksheets();
88
    }
89
}
90