PhpSpreadsheet/tests/PhpSpreadsheetTests/Calculation/Functions/MathTrig/RandArrayTest.php

76 lines
2.1 KiB
PHP

<?php
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\MathTrig;
use PhpOffice\PhpSpreadsheet\Calculation\Functions;
use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
use PhpOffice\PhpSpreadsheet\Calculation\MathTrig;
class RandArrayTest extends AllSetupTeardown
{
public function testRANDARRAYInteger(): void
{
$rows = 3;
$cols = 2;
$min = -5;
$max = 5;
$result = MathTrig\Random::randArray($rows, $cols, $min, $max, true);
self::assertIsArray($result);
self::assertCount($rows, /** @scrutinizer ignore-type */ $result);
self::assertIsArray($result[0]);
self::assertCount($cols, $result[0]);
$values = Functions::flattenArray($result);
array_walk(
$values,
function ($value) use ($min, $max): void {
self::assertIsInt($value);
self::assertTrue($value >= $min && $value <= $max);
}
);
}
public function testRANDARRAYFloat(): void
{
$rows = 3;
$cols = 2;
$min = -2;
$max = 2;
$result = MathTrig\Random::randArray($rows, $cols, $min, $max, false);
self::assertIsArray($result);
self::assertCount($rows, /** @scrutinizer ignore-type */ $result);
self::assertIsArray($result[0]);
self::assertCount($cols, $result[0]);
$values = Functions::flattenArray($result);
array_walk(
$values,
function ($value) use ($min, $max): void {
self::assertIsFloat($value);
self::assertTrue($value >= $min && $value <= $max);
}
);
}
public function testRANDARRAYExceptions(): void
{
$rows = 'THREE';
$cols = 2;
$min = 2;
$max = -2;
$result = MathTrig\Random::randArray($rows, $cols, $min, $max, false);
self::assertSame(ExcelError::VALUE(), $result);
$rows = 3;
$cols = 2;
$min = 2;
$max = -2;
$result = MathTrig\Random::randArray($rows, $cols, $min, $max, false);
self::assertSame(ExcelError::VALUE(), $result);
}
}