diff --git a/tests/PhpSpreadsheetTests/Calculation/Engine/RangeTest.php b/tests/PhpSpreadsheetTests/Calculation/Engine/RangeTest.php new file mode 100644 index 00000000..7dfda9ca --- /dev/null +++ b/tests/PhpSpreadsheetTests/Calculation/Engine/RangeTest.php @@ -0,0 +1,53 @@ +spreadSheet = new Spreadsheet(); + $this->spreadSheet->getActiveSheet() + ->setCellValue('A1', 1) + ->setCellValue('B1', 2) + ->setCellValue('C1', 3) + ->setCellValue('A2', 4) + ->setCellValue('B2', 5) + ->setCellValue('C2', 6) + ->setCellValue('A3', 7) + ->setCellValue('B3', 8) + ->setCellValue('C3', 9); + } + + /** + * @dataProvider providerRangeEvaluation + * + * @param mixed $formula + * @param int $expectedResult + */ + public function testRangeEvaluation($formula, $expectedResult): void + { + $workSheet = $this->spreadSheet->getActiveSheet(); + $workSheet->setCellValue('E1', $formula); + + $actualRresult = $workSheet->getCell('E1')->getCalculatedValue(); + self::assertSame($expectedResult, $actualRresult); + } + + public function providerRangeEvaluation() + { + return[ + ['=SUM(A1:B3,A1:C2)', 48], + ['=SUM(A1:B3 A1:C2)', 12], + ['=SUM(A1:A3,C1:C3)', 30], + ['=SUM(A1:A3 C1:C3)', 0], + ['=SUM(A1:B2,B2:C3)', 40], + ['=SUM(A1:B2 B2:C3)', 5], + ]; + } +}