All Text functions made array-ready

This commit is contained in:
MarkBaker 2022-02-11 20:08:34 +01:00
parent 6a2905a34c
commit b3ff2e347f
16 changed files with 369 additions and 23 deletions

View File

@ -1946,7 +1946,7 @@ parameters:
path: src/PhpSpreadsheet/Calculation/TextData/Format.php
-
message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Calculation\\\\TextData\\\\Format\\:\\:VALUE\\(\\) should return DateTimeInterface\\|float\\|int\\|string but returns mixed\\.$#"
message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Calculation\\\\TextData\\\\Format\\:\\:VALUE\\(\\) should return array\\|DateTimeInterface\\|float\\|int\\|string but returns mixed\\.$#"
count: 2
path: src/PhpSpreadsheet/Calculation/TextData/Format.php
@ -1990,6 +1990,11 @@ parameters:
count: 1
path: src/PhpSpreadsheet/Calculation/TextData/Helpers.php
-
message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Calculation\\\\TextData\\\\Replace\\:\\:substitute\\(\\) should return array\\|string but returns mixed\\.$#"
count: 1
path: src/PhpSpreadsheet/Calculation/TextData/Replace.php
-
message: "#^Variable \\$value on left side of \\?\\? always exists and is not nullable\\.$#"
count: 1

View File

@ -18,12 +18,17 @@ class Dollar
* The format used is $#,##0.00_);($#,##0.00)..
*
* @param mixed $number The value to format, or can be an array of numbers
* Or can be an array of values
* @param mixed $precision The number of digits to display to the right of the decimal point (as an integer).
* If precision is negative, number is rounded to the left of the decimal point.
* If you omit precision, it is assumed to be 2
* Or can be an array of precision values
*
* @return array|string
* If an array of values is passed for either of the arguments, then the returned result
* will also be an array with matching dimensions
*/
public static function format($number, $precision = 2): string
public static function format($number, $precision = 2)
{
return Format::DOLLAR($number, $precision);
}

View File

@ -102,7 +102,7 @@ class TextData
* If decimals is negative, number is rounded to the left of the decimal point.
* If you omit decimals, it is assumed to be 2
*
* @return string
* @return array|string
*/
public static function DOLLAR($value = 0, $decimals = 2)
{
@ -156,7 +156,7 @@ class TextData
* @param int $decimals
* @param bool $no_commas
*
* @return string
* @return array|string
*/
public static function FIXEDFORMAT($value, $decimals = 2, $no_commas = false)
{
@ -224,7 +224,7 @@ class TextData
*
* @param string $value Value
*
* @return int
* @return array|int
*/
public static function STRINGLENGTH($value = '')
{
@ -297,7 +297,7 @@ class TextData
* @param int $chars Number of characters
* @param string $newText String to replace in defined position
*
* @return string
* @return array|string
*/
public static function REPLACE($oldText, $start, $chars, $newText)
{
@ -316,7 +316,7 @@ class TextData
* @param string $toText To Value
* @param int $instance Instance Number
*
* @return string
* @return array|string
*/
public static function SUBSTITUTE($text = '', $fromText = '', $toText = '', $instance = 0)
{
@ -332,7 +332,7 @@ class TextData
*
* @param mixed $testValue Value to check
*
* @return null|string
* @return null|array|string
*/
public static function RETURNSTRING($testValue = '')
{
@ -349,7 +349,7 @@ class TextData
* @param mixed $value Value to check
* @param string $format Format mask to use
*
* @return string
* @return array|string
*/
public static function TEXTFORMAT($value, $format)
{
@ -365,7 +365,7 @@ class TextData
*
* @param mixed $value Value to check
*
* @return DateTimeInterface|float|int|string A string if arguments are invalid
* @return array|DateTimeInterface|float|int|string A string if arguments are invalid
*/
public static function VALUE($value = '')
{
@ -383,7 +383,7 @@ class TextData
* @param string $decimalSeparator decimal separator, defaults to locale defined value
* @param string $groupSeparator group/thosands separator, defaults to locale defined value
*
* @return float|string
* @return array|float|string
*/
public static function NUMBERVALUE($value = '', $decimalSeparator = null, $groupSeparator = null)
{
@ -402,7 +402,7 @@ class TextData
* @param mixed $value1
* @param mixed $value2
*
* @return bool
* @return array|bool
*/
public static function EXACT($value1, $value2)
{

View File

@ -3,6 +3,7 @@
namespace PhpOffice\PhpSpreadsheet\Calculation\TextData;
use DateTimeInterface;
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled;
use PhpOffice\PhpSpreadsheet\Calculation\DateTimeExcel;
use PhpOffice\PhpSpreadsheet\Calculation\Exception as CalcExp;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
@ -13,6 +14,8 @@ use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
class Format
{
use ArrayEnabled;
/**
* DOLLAR.
*
@ -20,12 +23,22 @@ class Format
* The format used is $#,##0.00_);($#,##0.00)..
*
* @param mixed $value The value to format
* Or can be an array of values
* @param mixed $decimals The number of digits to display to the right of the decimal point (as an integer).
* If decimals is negative, number is rounded to the left of the decimal point.
* If you omit decimals, it is assumed to be 2
* Or can be an array of values
*
* @return array|string
* If an array of values is passed for either of the arguments, then the returned result
* will also be an array with matching dimensions
*/
public static function DOLLAR($value = 0, $decimals = 2): string
public static function DOLLAR($value = 0, $decimals = 2)
{
if (is_array($value) || is_array($decimals)) {
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $decimals);
}
try {
$value = Helpers::extractFloat($value);
$decimals = Helpers::extractInt($decimals, -100, 0, true);
@ -52,11 +65,22 @@ class Format
* FIXED.
*
* @param mixed $value The value to format
* Or can be an array of values
* @param mixed $decimals Integer value for the number of decimal places that should be formatted
* Or can be an array of values
* @param mixed $noCommas Boolean value indicating whether the value should have thousands separators or not
* Or can be an array of values
*
* @return array|string
* If an array of values is passed for either of the arguments, then the returned result
* will also be an array with matching dimensions
*/
public static function FIXEDFORMAT($value, $decimals = 2, $noCommas = false): string
public static function FIXEDFORMAT($value, $decimals = 2, $noCommas = false)
{
if (is_array($value) || is_array($decimals) || is_array($noCommas)) {
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $decimals, $noCommas);
}
try {
$value = Helpers::extractFloat($value);
$decimals = Helpers::extractInt($decimals, -100, 0, true);
@ -85,10 +109,20 @@ class Format
* TEXT.
*
* @param mixed $value The value to format
* Or can be an array of values
* @param mixed $format A string with the Format mask that should be used
* Or can be an array of values
*
* @return array|string
* If an array of values is passed for either of the arguments, then the returned result
* will also be an array with matching dimensions
*/
public static function TEXTFORMAT($value, $format): string
public static function TEXTFORMAT($value, $format)
{
if (is_array($value) || is_array($format)) {
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $format);
}
$value = Helpers::extractString($value);
$format = Helpers::extractString($format);
@ -122,11 +156,18 @@ class Format
* VALUE.
*
* @param mixed $value Value to check
* Or can be an array of values
*
* @return DateTimeInterface|float|int|string A string if arguments are invalid
* @return array|DateTimeInterface|float|int|string A string if arguments are invalid
* If an array of values is passed for the argument, then the returned result
* will also be an array with matching dimensions
*/
public static function VALUE($value = '')
{
if (is_array($value)) {
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $value);
}
try {
$value = self::convertValue($value);
} catch (CalcExp $e) {
@ -191,13 +232,20 @@ class Format
* NUMBERVALUE.
*
* @param mixed $value The value to format
* Or can be an array of values
* @param mixed $decimalSeparator A string with the decimal separator to use, defaults to locale defined value
* Or can be an array of values
* @param mixed $groupSeparator A string with the group/thousands separator to use, defaults to locale defined value
* Or can be an array of values
*
* @return float|string
* @return array|float|string
*/
public static function NUMBERVALUE($value = '', $decimalSeparator = null, $groupSeparator = null)
{
if (is_array($value) || is_array($decimalSeparator) || is_array($groupSeparator)) {
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $decimalSeparator, $groupSeparator);
}
try {
$value = self::convertValue($value);
$decimalSeparator = self::getDecimalSeparator($decimalSeparator);

View File

@ -2,21 +2,36 @@
namespace PhpOffice\PhpSpreadsheet\Calculation\TextData;
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled;
use PhpOffice\PhpSpreadsheet\Calculation\Exception as CalcExp;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
class Replace
{
use ArrayEnabled;
/**
* REPLACE.
*
* @param mixed $oldText The text string value to modify
* Or can be an array of values
* @param mixed $start Integer offset for start character of the replacement
* Or can be an array of values
* @param mixed $chars Integer number of characters to replace from the start offset
* Or can be an array of values
* @param mixed $newText String to replace in the defined position
* Or can be an array of values
*
* @return array|string
* If an array of values is passed for either of the arguments, then the returned result
* will also be an array with matching dimensions
*/
public static function replace($oldText, $start, $chars, $newText): string
public static function replace($oldText, $start, $chars, $newText)
{
if (is_array($oldText) || is_array($start) || is_array($chars) || is_array($newText)) {
return self::evaluateArrayArguments([self::class, __FUNCTION__], $oldText, $start, $chars, $newText);
}
try {
$start = Helpers::extractInt($start, 1, 0, true);
$chars = Helpers::extractInt($chars, 0, 0, true);
@ -36,12 +51,24 @@ class Replace
* SUBSTITUTE.
*
* @param mixed $text The text string value to modify
* Or can be an array of values
* @param mixed $fromText The string value that we want to replace in $text
* Or can be an array of values
* @param mixed $toText The string value that we want to replace with in $text
* Or can be an array of values
* @param mixed $instance Integer instance Number for the occurrence of frmText to change
* Or can be an array of values
*
* @return array|string
* If an array of values is passed for either of the arguments, then the returned result
* will also be an array with matching dimensions
*/
public static function substitute($text = '', $fromText = '', $toText = '', $instance = null): string
public static function substitute($text = '', $fromText = '', $toText = '', $instance = null)
{
if (is_array($text) || is_array($fromText) || is_array($toText) || is_array($instance)) {
return self::evaluateArrayArguments([self::class, __FUNCTION__], $text, $fromText, $toText, $instance);
}
try {
$text = Helpers::extractString($text);
$fromText = Helpers::extractString($fromText);
@ -71,7 +98,7 @@ class Replace
}
if ($pos !== false) {
return self::REPLACE($text, ++$pos, mb_strlen($fromText, 'UTF-8'), $toText);
return Functions::scalar(self::REPLACE($text, ++$pos, mb_strlen($fromText, 'UTF-8'), $toText));
}
return $text;

View File

@ -2,17 +2,29 @@
namespace PhpOffice\PhpSpreadsheet\Calculation\TextData;
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
class Text
{
use ArrayEnabled;
/**
* LEN.
*
* @param mixed $value String Value
* Or can be an array of values
*
* @return array|int
* If an array of values is passed for the argument, then the returned result
* will also be an array with matching dimensions
*/
public static function length($value = ''): int
public static function length($value = '')
{
if (is_array($value)) {
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $value);
}
$value = Helpers::extractString($value);
return mb_strlen($value ?? '', 'UTF-8');
@ -24,10 +36,20 @@ class Text
* Use EXACT to test text being entered into a document.
*
* @param mixed $value1 String Value
* Or can be an array of values
* @param mixed $value2 String Value
* Or can be an array of values
*
* @return array|bool
* If an array of values is passed for either of the arguments, then the returned result
* will also be an array with matching dimensions
*/
public static function exact($value1, $value2): bool
public static function exact($value1, $value2)
{
if (is_array($value1) || is_array($value2)) {
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value1, $value2);
}
$value1 = Helpers::extractString($value1);
$value2 = Helpers::extractString($value2);
@ -38,11 +60,18 @@ class Text
* RETURNSTRING.
*
* @param mixed $testValue Value to check
* Or can be an array of values
*
* @return null|string
* @return null|array|string
* If an array of values is passed for the argument, then the returned result
* will also be an array with matching dimensions
*/
public static function test($testValue = '')
{
if (is_array($testValue)) {
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $testValue);
}
$testValue = Functions::flattenSingleValue($testValue);
if (is_string($testValue)) {

View File

@ -2,6 +2,8 @@
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\TextData;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
class DollarTest extends AllSetupTeardown
{
/**
@ -33,4 +35,25 @@ class DollarTest extends AllSetupTeardown
{
return require 'tests/data/Calculation/TextData/DOLLAR.php';
}
/**
* @dataProvider providerDollarArray
*/
public function testDollarArray(array $expectedResult, string $argument1, string $argument2): void
{
$calculation = Calculation::getInstance();
$formula = "=DOLLAR({$argument1}, {$argument2})";
$result = $calculation->_calculateFormulaValue($formula);
self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14);
}
public function providerDollarArray(): array
{
return [
'row vector #1' => [[['-$123.32', '$123.46', '$12,345.68']], '{-123.321, 123.456, 12345.6789}', '2'],
'column vector #1' => [[['-$123.32'], ['$123.46'], ['$12,345.68']], '{-123.321; 123.456; 12345.6789}', '2'],
'matrix #1' => [[['-$123.46', '$12,345.68'], ['-$123.456', '$12,345.679']], '{-123.456, 12345.6789}', '{2; 3}'],
];
}
}

View File

@ -2,6 +2,8 @@
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\TextData;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
class ExactTest extends AllSetupTeardown
{
/**
@ -33,4 +35,25 @@ class ExactTest extends AllSetupTeardown
{
return require 'tests/data/Calculation/TextData/EXACT.php';
}
/**
* @dataProvider providerExactArray
*/
public function testExactArray(array $expectedResult, string $argument1, string $argument2): void
{
$calculation = Calculation::getInstance();
$formula = "=EXACT({$argument1}, {$argument2})";
$result = $calculation->_calculateFormulaValue($formula);
self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14);
}
public function providerExactArray(): array
{
return [
'row vector #1' => [[[true, false, false]], '{"PHP", "php", "PHP8"}', '"PHP"'],
'column vector #1' => [[[false], [true], [false]], '{"php"; "PHP"; "PHP8"}', '"PHP"'],
'matrix #1' => [[[false, true], [false, true]], '{"TRUE", "FALSE"; TRUE, FALSE}', '"FALSE"'],
];
}
}

View File

@ -2,6 +2,8 @@
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\TextData;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
class FixedTest extends AllSetupTeardown
{
/**
@ -39,4 +41,25 @@ class FixedTest extends AllSetupTeardown
{
return require 'tests/data/Calculation/TextData/FIXED.php';
}
/**
* @dataProvider providerFixedArray
*/
public function testFixedArray(array $expectedResult, string $argument1, string $argument2): void
{
$calculation = Calculation::getInstance();
$formula = "=FIXED({$argument1}, {$argument2})";
$result = $calculation->_calculateFormulaValue($formula);
self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14);
}
public function providerFixedArray(): array
{
return [
'row vector #1' => [[['-123.32', '123.46', '12,345.68']], '{-123.321, 123.456, 12345.6789}', '2'],
'column vector #1' => [[['-123.32'], ['123.46'], ['12,345.68']], '{-123.321; 123.456; 12345.6789}', '2'],
'matrix #1' => [[['-123.46', '12,345.68'], ['-123.456', '12,345.679']], '{-123.456, 12345.6789}', '{2; 3}'],
];
}
}

View File

@ -2,6 +2,8 @@
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\TextData;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
class LenTest extends AllSetupTeardown
{
/**
@ -28,4 +30,25 @@ class LenTest extends AllSetupTeardown
{
return require 'tests/data/Calculation/TextData/LEN.php';
}
/**
* @dataProvider providerLenArray
*/
public function testLenArray(array $expectedResult, string $array): void
{
$calculation = Calculation::getInstance();
$formula = "=LEN({$array})";
$result = $calculation->_calculateFormulaValue($formula);
self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14);
}
public function providerLenArray(): array
{
return [
'row vector' => [[[3, 11, 14]], '{"PHP", "Hello World", "PhpSpreadsheet"}'],
'column vector' => [[[3], [11], [14]], '{"PHP"; "Hello World"; "PhpSpreadsheet"}'],
'matrix' => [[[3, 9], [11, 14]], '{"PHP", "ElePHPant"; "Hello World", "PhpSpreadsheet"}'],
];
}
}

View File

@ -2,6 +2,8 @@
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\TextData;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
class NumberValueTest extends AllSetupTeardown
{
/**
@ -39,4 +41,24 @@ class NumberValueTest extends AllSetupTeardown
{
return require 'tests/data/Calculation/TextData/NUMBERVALUE.php';
}
/**
* @dataProvider providerNumberValueArray
*/
public function testNumberValueArray(array $expectedResult, string $argument1, string $argument2, string $argument3): void
{
$calculation = Calculation::getInstance();
$formula = "=NumberValue({$argument1}, {$argument2}, {$argument3})";
$result = $calculation->_calculateFormulaValue($formula);
self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14);
}
public function providerNumberValueArray(): array
{
return [
'row vector #1' => [[[-123.321, 123.456, 12345.6789]], '{"-123,321", "123,456", "12 345,6789"}', '","', '" "'],
'column vector #1' => [[[-123.321], [123.456], [12345.6789]], '{"-123,321"; "123,456"; "12 345,6789"}', '","', '" "'],
];
}
}

View File

@ -2,6 +2,8 @@
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\TextData;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
class ReplaceTest extends AllSetupTeardown
{
/**
@ -46,4 +48,28 @@ class ReplaceTest extends AllSetupTeardown
{
return require 'tests/data/Calculation/TextData/REPLACE.php';
}
/**
* @dataProvider providerReplaceArray
*/
public function testReplaceArray(
array $expectedResult,
string $oldText,
string $start,
string $chars,
string $newText
): void {
$calculation = Calculation::getInstance();
$formula = "=REPLACE({$oldText}, {$start}, {$chars}, {$newText})";
$result = $calculation->_calculateFormulaValue($formula);
self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14);
}
public function providerReplaceArray(): array
{
return [
'row vector' => [[['Elephpant', 'ElePHPant']], '"Elephant"', '4', '2', '{"php", "PHP"}'],
];
}
}

View File

@ -2,6 +2,8 @@
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\TextData;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
class SubstituteTest extends AllSetupTeardown
{
/**
@ -46,4 +48,23 @@ class SubstituteTest extends AllSetupTeardown
{
return require 'tests/data/Calculation/TextData/SUBSTITUTE.php';
}
/**
* @dataProvider providerSubstituteArray
*/
public function testSubstituteArray(array $expectedResult, string $oldText, string $fromText, string $toText): void
{
$calculation = Calculation::getInstance();
$formula = "=SUBSTITUTE({$oldText}, {$fromText}, {$toText})";
$result = $calculation->_calculateFormulaValue($formula);
self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14);
}
public function providerSubstituteArray(): array
{
return [
'row vector' => [[['ElePHPant', 'EleFFant']], '"Elephant"', '"ph"', '{"PHP", "FF"}'],
];
}
}

View File

@ -2,6 +2,7 @@
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\TextData;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
use PhpOffice\PhpSpreadsheet\Calculation\TextData;
use PHPUnit\Framework\TestCase;
@ -23,4 +24,25 @@ class TTest extends TestCase
{
return require 'tests/data/Calculation/TextData/T.php';
}
/**
* @dataProvider providerTArray
*/
public function testTArray(array $expectedResult, string $argument): void
{
$calculation = Calculation::getInstance();
$formula = "=T({$argument})";
$result = $calculation->_calculateFormulaValue($formula);
self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14);
}
public function providerTArray(): array
{
return [
'row vector #1' => [[['PHP', null, 'PHP8']], '{"PHP", 99, "PHP8"}'],
'column vector #1' => [[[null], ['PHP'], [null]], '{12; "PHP"; 1.2}'],
'matrix #1' => [[['TRUE', 'FALSE'], [null, null]], '{"TRUE", "FALSE"; TRUE, FALSE}'],
];
}
}

View File

@ -2,6 +2,8 @@
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\TextData;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
class TextTest extends AllSetupTeardown
{
/**
@ -33,4 +35,31 @@ class TextTest extends AllSetupTeardown
{
return require 'tests/data/Calculation/TextData/TEXT.php';
}
/**
* @dataProvider providerTextArray
*/
public function testTextArray(array $expectedResult, string $argument1, string $argument2): void
{
$calculation = Calculation::getInstance();
$formula = "=TEXT({$argument1}, {$argument2})";
$result = $calculation->_calculateFormulaValue($formula);
self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14);
}
public function providerTextArray(): array
{
return [
'row vector' => [[['123.75%', '1 19/80']], '1.2375', '{"0.00%", "0 ??/???"}'],
'matrix vector' => [
[
['$ -1,234.57', '(1,234.57)'],
['$ 9,876.54', '9,876.54'],
],
'{-1234.5678; 9876.5432}',
'{"$ #,##0.00", "#,##0.00;(#,##0.00)"}',
],
];
}
}

View File

@ -2,6 +2,7 @@
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\TextData;
use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
use PhpOffice\PhpSpreadsheet\Shared\StringHelper;
class ValueTest extends AllSetupTeardown
@ -65,4 +66,23 @@ class ValueTest extends AllSetupTeardown
{
return require 'tests/data/Calculation/TextData/VALUE.php';
}
/**
* @dataProvider providerValueArray
*/
public function testValueArray(array $expectedResult, string $argument): void
{
$calculation = Calculation::getInstance();
$formula = "=VALUE({$argument})";
$result = $calculation->_calculateFormulaValue($formula);
self::assertEqualsWithDelta($expectedResult, $result, 1.0e-14);
}
public function providerValueArray(): array
{
return [
'row vector' => [[[44604, -1234.567]], '{"12-Feb-2022", "$ -1,234.567"}'],
];
}
}