Additional array formula tests for Ods Reader

This commit is contained in:
MarkBaker
2022-03-05 10:37:43 +01:00
parent b67841a3dd
commit d6b6a110ec
2 changed files with 63 additions and 11 deletions
@@ -20,19 +20,71 @@ class ArrayFormulaTest extends TestCase
$this->spreadsheet = $reader->load($filename);
}
public function testArrayFormulaReader(): void
{
/**
* @dataProvider arrayFormulaReaderProvider
*
* @param mixed $expectedValue
*/
public function testArrayFormulaReader(
string $cellAddress,
string $expectedRange,
string $expectedFormula,
$expectedValue
): void {
$worksheet = $this->spreadsheet->getActiveSheet();
$cell = $worksheet->getCell('B2');
$cell = $worksheet->getCell($cellAddress);
self::assertTrue($cell->isArrayFormula());
self::assertSame('B2:C3', $cell->arrayFormulaRange());
self::assertSame('={2,3}*{4;5}', $cell->getValue());
self::assertSame([[8, 12], [10, 15]], $cell->getCalculatedValue(true, true));
self::assertSame(8, $cell->getCalculatedValue());
self::assertSame(8, $cell->getCalculatedValue());
self::assertSame(12, $worksheet->getCell('C2')->getCalculatedValue());
self::assertSame(10, $worksheet->getCell('B3')->getCalculatedValue());
self::assertSame(15, $worksheet->getCell('C3')->getCalculatedValue());
self::assertSame($expectedRange, $cell->arrayFormulaRange());
self::assertSame($expectedFormula, strtoupper($cell->getValue()));
self::assertSame($expectedValue, $cell->getCalculatedValue(true, true));
}
public function arrayFormulaReaderProvider(): array
{
return [
[
'B2',
'B2:C3',
'={2,3}*{4;5}',
[[8, 12], [10, 15]],
],
[
'E1',
'E1:H1',
'=SIN({-1,0,1,2})',
[[-0.8414709848078965, 0.0, 0.8414709848078965, 0.9092974268256817]],
],
[
'E3',
'E3',
'=MAX(SIN({-1,0,1,2}))',
0.90929742682568,
],
[
'D5',
'D5:E6',
'=A5:B5*A5:A6',
[[4, 6], [8, 12]],
],
[
'D8',
'D8:E9',
'=A8:B8*A8:A9',
[[9, 12], [15, 20]],
],
[
'D11',
'D11:E12',
'=A11:B11*A11:A12',
[[16, 20], [24, 30]],
],
[
'D14',
'D14:E15',
'=A14:B14*A14:A15',
[[25, 30], [35, 42]],
],
];
}
}
Binary file not shown.