Passed
Push — master ( e6aacf...0e570a )
by
unknown
25:35 queued 18:08
created

namedRangeCalculationProvider1()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 8
dl 0
loc 10
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpOffice\PhpSpreadsheetTests\Calculation;
6
7
use PhpOffice\PhpSpreadsheet\IOFactory;
8
use PHPUnit\Framework\Attributes\DataProvider;
9
use PHPUnit\Framework\TestCase;
10
11
class DefinedNamesCalculationTest extends TestCase
12
{
13
    #[DataProvider('namedRangeCalculationProvider1')]
14
    public function testNamedRangeCalculations1(string $cellAddress, float $expectedValue): void
15
    {
16
        $inputFileType = 'Xlsx';
17
        $inputFileName = __DIR__ . '/../../data/Calculation/DefinedNames/NamedRanges.xlsx';
18
19
        $reader = IOFactory::createReader($inputFileType);
20
        $spreadsheet = $reader->load($inputFileName);
21
22
        $calculatedCellValue = $spreadsheet->getActiveSheet()->getCell($cellAddress)->getCalculatedValue();
23
        self::assertSame($expectedValue, $calculatedCellValue, "Failed calculation for cell {$cellAddress}");
24
    }
25
26
    #[DataProvider('namedRangeCalculationProvider2')]
27
    public function testNamedRangeCalculationsWithAdjustedRateValue(string $cellAddress, float $expectedValue): void
28
    {
29
        $inputFileType = 'Xlsx';
30
        $inputFileName = __DIR__ . '/../../data/Calculation/DefinedNames/NamedRanges.xlsx';
31
32
        $reader = IOFactory::createReader($inputFileType);
33
        $spreadsheet = $reader->load($inputFileName);
34
35
        $spreadsheet->getActiveSheet()->getCell('B1')->setValue(12.5);
36
37
        $calculatedCellValue = $spreadsheet->getActiveSheet()->getCell($cellAddress)->getCalculatedValue();
38
        self::assertSame($expectedValue, $calculatedCellValue, "Failed calculation for cell {$cellAddress}");
39
    }
40
41
    #[DataProvider('namedRangeCalculationProvider1')]
42
    public function testNamedFormulaCalculations1(string $cellAddress, float $expectedValue): void
43
    {
44
        $inputFileType = 'Xlsx';
45
        $inputFileName = __DIR__ . '/../../data/Calculation/DefinedNames/NamedFormulae.xlsx';
46
47
        $reader = IOFactory::createReader($inputFileType);
48
        $spreadsheet = $reader->load($inputFileName);
49
50
        $calculatedCellValue = $spreadsheet->getActiveSheet()->getCell($cellAddress)->getCalculatedValue();
51
        self::assertSame($expectedValue, $calculatedCellValue, "Failed calculation for cell {$cellAddress}");
52
    }
53
54
    #[DataProvider('namedRangeCalculationProvider2')]
55
    public function testNamedFormulaeCalculationsWithAdjustedRateValue(string $cellAddress, float $expectedValue): void
56
    {
57
        $inputFileType = 'Xlsx';
58
        $inputFileName = __DIR__ . '/../../data/Calculation/DefinedNames/NamedFormulae.xlsx';
59
60
        $reader = IOFactory::createReader($inputFileType);
61
        $spreadsheet = $reader->load($inputFileName);
62
63
        $spreadsheet->getActiveSheet()->getCell('B1')->setValue(12.5);
64
65
        $calculatedCellValue = $spreadsheet->getActiveSheet()->getCell($cellAddress)->getCalculatedValue();
66
        self::assertSame($expectedValue, $calculatedCellValue, "Failed calculation for cell {$cellAddress}");
67
    }
68
69
    public static function namedRangeCalculationProvider1(): array
70
    {
71
        return [
72
            ['C4', 56.25],
73
            ['C5', 54.375],
74
            ['C6', 48.75],
75
            ['C7', 52.5],
76
            ['C8', 41.25],
77
            ['B10', 33.75],
78
            ['C10', 253.125],
79
        ];
80
    }
81
82
    public static function namedRangeCalculationProvider2(): array
83
    {
84
        return [
85
            ['C4', 93.75],
86
            ['C5', 90.625],
87
            ['C6', 81.25],
88
            ['C7', 87.5],
89
            ['C8', 68.75],
90
            ['C10', 421.875],
91
        ];
92
    }
93
}
94