mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-08-25 04:08:19 +00:00
9c2deb125f
Stop a few of scrutinizers complaints about 100% valid use of PHP variadics. Hopefully, this issue will cease to be an issue when we can specify mixed datatype for variadic arguments in the tests
113 lines
3.6 KiB
PHP
113 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\DateTime;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
|
|
use PhpOffice\PhpSpreadsheet\Calculation\DateTimeExcel\TimeParts;
|
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception as CalculationException;
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheetTests\Calculation\Functions\FormulaArguments;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class MinuteTest extends TestCase
|
|
{
|
|
/**
|
|
* @dataProvider providerMINUTE
|
|
*
|
|
* @param mixed $expectedResult
|
|
*/
|
|
public function testDirectCallToMINUTE($expectedResult, ...$args): void
|
|
{
|
|
$result = TimeParts::MINUTE(/** @scrutinizer ignore-type */ ...$args);
|
|
self::assertSame($expectedResult, $result);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider providerMINUTE
|
|
*
|
|
* @param mixed $expectedResult
|
|
*/
|
|
public function testMINUTEAsFormula($expectedResult, ...$args): void
|
|
{
|
|
$arguments = new FormulaArguments(...$args);
|
|
|
|
$calculation = Calculation::getInstance();
|
|
$formula = "=MINUTE({$arguments})";
|
|
|
|
$result = $calculation->_calculateFormulaValue($formula);
|
|
self::assertSame($expectedResult, $result);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider providerMINUTE
|
|
*
|
|
* @param mixed $expectedResult
|
|
*/
|
|
public function testMINUTEInWorksheet($expectedResult, ...$args): void
|
|
{
|
|
$arguments = new FormulaArguments(...$args);
|
|
|
|
$spreadsheet = new Spreadsheet();
|
|
$worksheet = $spreadsheet->getActiveSheet();
|
|
$argumentCells = $arguments->populateWorksheet($worksheet);
|
|
$formula = "=MINUTE({$argumentCells})";
|
|
|
|
$result = $worksheet->setCellValue('A1', $formula)
|
|
->getCell('A1')
|
|
->getCalculatedValue();
|
|
self::assertSame($expectedResult, $result);
|
|
}
|
|
|
|
public function providerMINUTE(): array
|
|
{
|
|
return require 'tests/data/Calculation/DateTime/MINUTE.php';
|
|
}
|
|
|
|
/**
|
|
* @dataProvider providerUnhappyMINUTE
|
|
*/
|
|
public function testMINUTEUnhappyPath(string $expectedException, ...$args): void
|
|
{
|
|
$arguments = new FormulaArguments(...$args);
|
|
|
|
$spreadsheet = new Spreadsheet();
|
|
$worksheet = $spreadsheet->getActiveSheet();
|
|
$argumentCells = $arguments->populateWorksheet($worksheet);
|
|
$formula = "=MINUTE({$argumentCells})";
|
|
|
|
$this->expectException(CalculationException::class);
|
|
$this->expectExceptionMessage($expectedException);
|
|
$worksheet->setCellValue('A1', $formula)
|
|
->getCell('A1')
|
|
->getCalculatedValue();
|
|
}
|
|
|
|
public function providerUnhappyMINUTE(): array
|
|
{
|
|
return [
|
|
['Formula Error: Wrong number of arguments for MINUTE() function'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @dataProvider providerMinuteArray
|
|
*/
|
|
public function testMinuteArray(array $expectedResult, string $array): void
|
|
{
|
|
$calculation = Calculation::getInstance();
|
|
|
|
$formula = "=MINUTE({$array})";
|
|
$result = $calculation->_calculateFormulaValue($formula);
|
|
self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14);
|
|
}
|
|
|
|
public function providerMinuteArray(): array
|
|
{
|
|
return [
|
|
'row vector' => [[[2, 14, 20]], '{"2022-02-09 01:02:03", "2022-02-09 13:14:15", "2022-02-09 19:20:21"}'],
|
|
'column vector' => [[[2], [14], [20]], '{"2022-02-09 01:02:03"; "2022-02-09 13:14:15"; "2022-02-09 19:20:21"}'],
|
|
'matrix' => [[[2, 14], [20, 59]], '{"2022-02-09 01:02:03", "2022-02-09 13:14:15"; "2022-02-09 19:20:21", "1999-12-31 23:59:59"}'],
|
|
];
|
|
}
|
|
}
|