Fix INDEX() function when rows count less than row number (#233)
This commit is contained in:
parent
360db8dbcd
commit
810f174d6e
|
@ -627,7 +627,7 @@ class LookupRef
|
||||||
return Functions::VALUE();
|
return Functions::VALUE();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_array($arrayValues)) {
|
if (!is_array($arrayValues) || ($rowNum > count($arrayValues))) {
|
||||||
return Functions::REF();
|
return Functions::REF();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -647,7 +647,7 @@ class LookupRef
|
||||||
if (isset($arrayColumn[$rowNum])) {
|
if (isset($arrayColumn[$rowNum])) {
|
||||||
$returnArray[] = $arrayColumn[$rowNum];
|
$returnArray[] = $arrayColumn[$rowNum];
|
||||||
} else {
|
} else {
|
||||||
return $arrayValues[$rowNum];
|
return [$rowNum => $arrayValues[$rowNum]];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return $arrayValues[$rowNum];
|
return $arrayValues[$rowNum];
|
||||||
|
|
|
@ -66,4 +66,21 @@ class LookupRefTest extends PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
return require 'data/Calculation/LookupRef/MATCH.php';
|
return require 'data/Calculation/LookupRef/MATCH.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider providerINDEX
|
||||||
|
* @group fail19
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testINDEX($expectedResult, ...$args)
|
||||||
|
{
|
||||||
|
$result = LookupRef::INDEX(...$args);
|
||||||
|
self::assertEquals($expectedResult, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerINDEX()
|
||||||
|
{
|
||||||
|
return require 'data/Calculation/LookupRef/INDEX.php';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
[20 => ['R' => 1]], // Expected
|
||||||
|
// Input
|
||||||
|
[20 => ['R' => 1]],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!', // Expected
|
||||||
|
// Input
|
||||||
|
[
|
||||||
|
20 => ['R' => 1],
|
||||||
|
21 => ['R' => 2],
|
||||||
|
],
|
||||||
|
-1,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#REF!', // Expected
|
||||||
|
// Input
|
||||||
|
[
|
||||||
|
20 => ['R' => 1],
|
||||||
|
21 => ['R' => 2],
|
||||||
|
],
|
||||||
|
10,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[21 => ['R' => 2]], // Expected
|
||||||
|
// Input
|
||||||
|
[
|
||||||
|
20 => ['R' => 1],
|
||||||
|
21 => ['R' => 2],
|
||||||
|
],
|
||||||
|
2,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[21 => ['R' => 2, 'S' => 4]], // Expected
|
||||||
|
// Input
|
||||||
|
[
|
||||||
|
'20' => ['R' => 1, 'S' => 3],
|
||||||
|
'21' => ['R' => 2, 'S' => 4],
|
||||||
|
],
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!', // Expected
|
||||||
|
// Input
|
||||||
|
[
|
||||||
|
'20' => ['R' => 1, 'S' => 3],
|
||||||
|
'21' => ['R' => 2, 'S' => 4],
|
||||||
|
],
|
||||||
|
2,
|
||||||
|
-1,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!', // Expected
|
||||||
|
// Input
|
||||||
|
[
|
||||||
|
'20' => ['R' => 1, 'S' => 3],
|
||||||
|
'21' => ['R' => 2, 'S' => 4],
|
||||||
|
],
|
||||||
|
2,
|
||||||
|
10,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
4, // Expected
|
||||||
|
// Input
|
||||||
|
[
|
||||||
|
'20' => ['R' => 1, 'S' => 3],
|
||||||
|
'21' => ['R' => 2, 'S' => 4],
|
||||||
|
],
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
],
|
||||||
|
];
|
Loading…
Reference in New Issue