Files
PhpSpreadsheet/tests/PhpSpreadsheetTests/Calculation/Engine/ExcelFunctionsCollectionTest.php
MarkBaker 90931dbea6 Add "Not yet Implemented" stubs for 14 new Excel Functions
- TEXTBEFORE – Returns text that’s before delimiting characters
- TEXTAFTER – Returns text that’s after delimiting character
- TEXTSPLIT – Splits text into rows or columns using delimiters
- VSTACK – Stacks arrays vertically
- HSTACK – Stacks arrays horizontally
- TOROW – Returns the array as one row
- TOCOL – Returns the array as one column
- WRAPROWS – Wraps a row array into a 2D array
- WRAPCOLS – Wraps a column array into a 2D array
- TAKE – Returns rows or columns from array start or end
- DROP – Drops rows or columns from array start or end
- CHOOSEROWS – Returns the specified rows from an array
- CHOOSECOLS – Returns the specified columns from an array
- EXPAND – Expands an array to the specified dimensions
2022-04-30 13:07:00 +02:00

89 lines
3.4 KiB
PHP

<?php
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Engine;
use PhpOffice\PhpSpreadsheet\Calculation\Engine\ExcelFunctions;
use PhpOffice\PhpSpreadsheet\Calculation\Engine\XlFunctionAbstract;
use PhpOffice\PhpSpreadsheet\Calculation\Exception;
use PHPUnit\Framework\TestCase;
class ExcelFunctionsCollectionTest extends TestCase
{
public function testRecognisedExcelFunction(): void
{
$excelFunctionCollection = new ExcelFunctions();
self::assertFalse($excelFunctionCollection->isRecognisedExcelFunction('AAA'));
self::assertTrue($excelFunctionCollection->isRecognisedExcelFunction('ABS'));
}
public function testFunctionDefinitionLoadsAsArrayElement(): void
{
$excelFunctionCollection = new ExcelFunctions();
$excelFunctionDefinition = $excelFunctionCollection['ABS'];
self::assertInstanceOf(XlFunctionAbstract::class, $excelFunctionDefinition);
self::assertSame('ABS', $excelFunctionDefinition->name);
}
public function testReadOnlyArrayAccess(): void
{
self::expectException(Exception::class);
self::expectExceptionMessage('Action not permitted');
$excelFunctionCollection = new ExcelFunctions();
$excelFunctionDefinition = $excelFunctionCollection['ABS'];
self::assertInstanceOf(XlFunctionAbstract::class, $excelFunctionDefinition);
self::assertSame('ABS', $excelFunctionDefinition->name);
$excelFunctionCollection['ABS'] = 'NO LONGER ABS';
}
public function testUnsetBlockedAsArray(): void
{
self::expectException(Exception::class);
self::expectExceptionMessage('Action not permitted');
$excelFunctionCollection = new ExcelFunctions();
$excelFunctionDefinition = $excelFunctionCollection['ABS'];
self::assertInstanceOf(XlFunctionAbstract::class, $excelFunctionDefinition);
self::assertSame('ABS', $excelFunctionDefinition->name);
unset($excelFunctionCollection['ABS']);
}
public function testFunctionDefinitionLoadsAsObjectProperty(): void
{
$excelFunctionCollection = new ExcelFunctions();
$excelFunctionDefinition = $excelFunctionCollection->ABS; // @phpstan-ignore-line
self::assertInstanceOf(XlFunctionAbstract::class, $excelFunctionDefinition);
self::assertSame('ABS', $excelFunctionDefinition->name);
}
public function testReadOnlyObjectAccess(): void
{
self::expectException(Exception::class);
self::expectExceptionMessage('Action not permitted');
$excelFunctionCollection = new ExcelFunctions();
$excelFunctionDefinition = $excelFunctionCollection->ABS; // @phpstan-ignore-line
self::assertInstanceOf(XlFunctionAbstract::class, $excelFunctionDefinition);
self::assertSame('ABS', $excelFunctionDefinition->name);
$excelFunctionCollection->ABS = 'NO LONGER ABS'; // @phpstan-ignore-line
}
public function testUnsetBlockedAsObjectProperty(): void
{
self::expectException(Exception::class);
self::expectExceptionMessage('Action not permitted');
$excelFunctionCollection = new ExcelFunctions();
$excelFunctionDefinition = $excelFunctionCollection->ABS; // @phpstan-ignore-line
self::assertInstanceOf(XlFunctionAbstract::class, $excelFunctionDefinition);
self::assertSame('ABS', $excelFunctionDefinition->name);
unset($excelFunctionCollection->ABS);
}
}