Passed
Pull Request — master (#4207)
by Owen
13:50
created

CloneTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 4
eloc 35
dl 0
loc 52
rs 10
c 2
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testSerialize1() 0 8 1
A testGetCloneIndex() 0 10 1
A testUnattachedIndex() 0 17 1
A testSerialize2() 0 9 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpOffice\PhpSpreadsheetTests\Worksheet;
6
7
use PhpOffice\PhpSpreadsheet\Exception as SpreadsheetException;
8
use PhpOffice\PhpSpreadsheet\Spreadsheet;
9
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
10
use PHPUnit\Framework\TestCase;
11
12
class CloneTest extends TestCase
13
{
14
    public function testUnattachedIndex(): void
15
    {
16
        $spreadsheet = new Spreadsheet();
17
        $sheet1 = $spreadsheet->getActiveSheet();
18
        $sheet1->getCell('A1')->setValue(10);
19
        $sheet2 = clone $sheet1;
20
        $sheet2->getCell('A1')->setValue(20);
21
        self::assertSame(0, $spreadsheet->getIndex($sheet1));
22
        $idx = $spreadsheet->getIndex($sheet2, true);
23
        self::assertSame(-1, $idx);
24
        $sheet2->setTitle('clone');
25
        $spreadsheet->addSheet($sheet2);
26
        $idx = $spreadsheet->getIndex($sheet2, true);
27
        self::assertSame(1, $idx);
28
        self::assertSame(10, $spreadsheet->getSheet(0)->getCell('A1')->getValue());
29
        self::assertSame(20, $spreadsheet->getSheet(1)->getCell('A1')->getValue());
30
        $spreadsheet->disconnectWorksheets();
31
    }
32
33
    public function testGetCloneIndex(): void
34
    {
35
        $this->expectException(SpreadsheetException::class);
36
        $this->expectExceptionMessage('Sheet does not exist');
37
        $spreadsheet = new Spreadsheet();
38
        $sheet1 = $spreadsheet->getActiveSheet();
39
        $sheet1->getCell('A1')->setValue(10);
40
        $sheet2 = clone $sheet1;
41
        $spreadsheet->getSheet($spreadsheet->getIndex($sheet2))
42
            ->setCellValue('A1', 100);
43
    }
44
45
    public function testSerialize1(): void
46
    {
47
        // If worksheet attached to spreadsheet, can't serialize it.
48
        $this->expectException(SpreadsheetException::class);
49
        $this->expectExceptionMessage('cannot be serialized');
50
        $spreadsheet = new Spreadsheet();
51
        $sheet1 = $spreadsheet->getActiveSheet();
52
        serialize($sheet1);
53
    }
54
55
    public function testSerialize2(): void
56
    {
57
        $sheet1 = new Worksheet();
58
        $sheet1->getCell('A1')->setValue(10);
59
        $serialized = serialize($sheet1);
60
        /** @var Worksheet */
61
        $newSheet = unserialize($serialized);
62
        self::assertSame(10, $newSheet->getCell('A1')->getValue());
63
        self::assertNotEquals($newSheet->getHashInt(), $sheet1->getHashInt());
64
    }
65
}
66