improve tests

This commit is contained in:
Dennis Eichhorn 2020-10-06 00:50:24 +02:00
parent f7c5233d28
commit 58c49080c8
29 changed files with 115 additions and 30 deletions

View File

@ -537,7 +537,7 @@ final class JumpPointSearch implements PathFinderInterface
return $node; return $node;
} }
} else { } else {
throw new \Exception('invalid movement'); throw new \Exception('invalid movement'); // @codeCoverageIgnore
} }
return self::jumpStraight($grid->getNode($x + $dx, $y + $dy), $node, $endNode, $grid); return self::jumpStraight($grid->getNode($x + $dx, $y + $dy), $node, $endNode, $grid);

View File

@ -209,7 +209,7 @@ class Path
$node = $this->grid->getNode($x0, $y0); $node = $this->grid->getNode($x0, $y0);
if ($node === null) { if ($node === null) {
break; break; // @codeCoverageIgnore
} }
} }

View File

@ -127,8 +127,9 @@ final class Autoloader
*/ */
public static function invalidate(string $class) : bool public static function invalidate(string $class) : bool
{ {
if (!\extension_loaded('opcache') if (!\extension_loaded('zend opcache')
|| !\opcache_is_script_cached($class) || !\opcache_is_script_cached($class)
|| \opcache_get_status() === false
) { ) {
return false; return false;
} }

View File

@ -68,8 +68,11 @@ final class Dispatcher implements DispatcherInterface
if (\is_array($controller)) { if (\is_array($controller)) {
if (isset($controller['dest'])) { if (isset($controller['dest'])) {
if (!empty($data) && !empty($controller['data'])) { if (!empty($controller['data'])) {
$data = \array_merge($data, $controller['data']); $data = \array_merge(
empty($data) ? [] : $data,
\is_array($controller['data']) ? $controller['data'] : [$controller['data']]
);
} }
$controller = $controller['dest']; $controller = $controller['dest'];

View File

@ -7,6 +7,7 @@
* @package phpOMS\Math\Matrix * @package phpOMS\Math\Matrix
* @copyright Dennis Eichhorn * @copyright Dennis Eichhorn
* @license OMS License 1.0 * @license OMS License 1.0
* @license JAMA - https://math.nist.gov/javanumerics/jama/
* @version 1.0.0 * @version 1.0.0
* @link https://orange-management.org * @link https://orange-management.org
*/ */
@ -23,6 +24,7 @@ use phpOMS\Math\Matrix\Exception\InvalidDimensionException;
* *
* @package phpOMS\Math\Matrix * @package phpOMS\Math\Matrix
* @license OMS License 1.0 * @license OMS License 1.0
* @license JAMA - https://math.nist.gov/javanumerics/jama/
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */

View File

@ -7,6 +7,7 @@
* @package phpOMS\Math\Matrix * @package phpOMS\Math\Matrix
* @copyright Dennis Eichhorn * @copyright Dennis Eichhorn
* @license OMS License 1.0 * @license OMS License 1.0
* @license JAMA - https://math.nist.gov/javanumerics/jama/
* @version 1.0.0 * @version 1.0.0
* @link https://orange-management.org * @link https://orange-management.org
*/ */
@ -24,6 +25,7 @@ use phpOMS\Math\Geometry\Shape\D2\Triangle;
* *
* @package phpOMS\Math\Matrix * @package phpOMS\Math\Matrix
* @license OMS License 1.0 * @license OMS License 1.0
* @license JAMA - https://math.nist.gov/javanumerics/jama/
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */

View File

@ -7,6 +7,7 @@
* @package phpOMS\Math\Matrix * @package phpOMS\Math\Matrix
* @copyright Dennis Eichhorn * @copyright Dennis Eichhorn
* @license OMS License 1.0 * @license OMS License 1.0
* @license JAMA - https://math.nist.gov/javanumerics/jama/
* @version 1.0.0 * @version 1.0.0
* @link https://orange-management.org * @link https://orange-management.org
*/ */
@ -23,6 +24,7 @@ use phpOMS\Math\Matrix\Exception\InvalidDimensionException;
* *
* @package phpOMS\Math\Matrix * @package phpOMS\Math\Matrix
* @license OMS License 1.0 * @license OMS License 1.0
* @license JAMA - https://math.nist.gov/javanumerics/jama/
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */

View File

@ -7,6 +7,7 @@
* @package phpOMS\Math\Matrix * @package phpOMS\Math\Matrix
* @copyright Dennis Eichhorn * @copyright Dennis Eichhorn
* @license OMS License 1.0 * @license OMS License 1.0
* @license JAMA - https://math.nist.gov/javanumerics/jama/
* @version 1.0.0 * @version 1.0.0
* @link https://orange-management.org * @link https://orange-management.org
*/ */
@ -24,6 +25,7 @@ use phpOMS\Math\Matrix\Exception\InvalidDimensionException;
* *
* @package phpOMS\Math\Matrix * @package phpOMS\Math\Matrix
* @license OMS License 1.0 * @license OMS License 1.0
* @license JAMA - https://math.nist.gov/javanumerics/jama/
* @link https://orange-management.org * @link https://orange-management.org
* @since 1.0.0 * @since 1.0.0
*/ */

View File

@ -109,7 +109,7 @@ final class Evaluator
$equation = \preg_split('/([\+\-\*\/\^\(\)])/', $equation, -1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE); $equation = \preg_split('/([\+\-\*\/\^\(\)])/', $equation, -1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE);
if ($equation === false) { if ($equation === false) {
return []; return []; // @codeCoverageIgnore
} }
$equation = \array_filter($equation, function($n) { $equation = \array_filter($equation, function($n) {

View File

@ -156,7 +156,6 @@ abstract class HeaderAbstract
public function setStatusCode(int $status) : void public function setStatusCode(int $status) : void
{ {
$this->status = $status; $this->status = $status;
$this->generate($status);
} }
/** /**

View File

@ -122,7 +122,7 @@ class PriorityQueue implements \Countable, \Serializable
case PriorityMode::LOWEST: case PriorityMode::LOWEST:
return $this->getInsertLowest($priority); return $this->getInsertLowest($priority);
default: default:
throw new InvalidEnumValue($this->type); throw new InvalidEnumValue($this->type); // @codeCoverageIgnore
} }
} }

View File

@ -444,7 +444,7 @@ final class File extends FileAbstract implements FileInterface, LocalContainerIn
} }
if (!\is_writable(\dirname($path))) { if (!\is_writable(\dirname($path))) {
return false; return false; // @codeCoverageIgnore
} }
\touch($path); \touch($path);

View File

@ -54,7 +54,7 @@ final class SystemUtils
$fh = \fopen('/proc/meminfo', 'r'); $fh = \fopen('/proc/meminfo', 'r');
if ($fh === false) { if ($fh === false) {
return $mem; return $mem; // @codeCoverageIgnore
} }
while ($line = \fgets($fh)) { while ($line = \fgets($fh)) {
@ -86,7 +86,7 @@ final class SystemUtils
$free = \shell_exec('free'); $free = \shell_exec('free');
if ($free === null) { if ($free === null) {
return $memUsage; return $memUsage; // @codeCoverageIgnore
} }
$free = \trim($free); $free = \trim($free);

View File

@ -214,6 +214,7 @@ final class HttpUri implements UriInterface
* @return string Returns the current uri * @return string Returns the current uri
* *
* @since 1.0.0 * @since 1.0.0
* @codeCoverageIgnore
*/ */
public static function getCurrent() : string public static function getCurrent() : string
{ {
@ -230,6 +231,7 @@ final class HttpUri implements UriInterface
* @return HttpUri Returns the current uri * @return HttpUri Returns the current uri
* *
* @since 1.0.0 * @since 1.0.0
* @codeCoverageIgnore
*/ */
public static function fromCurrent() : self public static function fromCurrent() : self
{ {

View File

@ -201,9 +201,8 @@ final class UriFactory
/** @var array $urlStructure */ /** @var array $urlStructure */
$urlStructure = \parse_url($url); $urlStructure = \parse_url($url);
if ($urlStructure === false) { if ($urlStructure === false) {
return $url; return $url; // @codeCoverageIgnore
} }
if (isset($urlStructure['query'])) { if (isset($urlStructure['query'])) {

View File

@ -327,7 +327,7 @@ abstract class C128Abstract
$image = \imagecreate($dimensions['width'], $dimensions['height']); $image = \imagecreate($dimensions['width'], $dimensions['height']);
if ($image === false) { if ($image === false) {
throw new \Exception(); throw new \Exception(); // @codeCoverageIgnore
} }
$black = \imagecolorallocate($image, 0, 0, 0); $black = \imagecolorallocate($image, 0, 0, 0);

View File

@ -86,7 +86,7 @@ final class Huffman
$binary = ''; $binary = '';
if ($splittedBinaryString === false) { if ($splittedBinaryString === false) {
return $binary; return $binary; // @codeCoverageIgnore
} }
foreach ($splittedBinaryString as $i => $c) { foreach ($splittedBinaryString as $i => $c) {

View File

@ -32,14 +32,14 @@ class Gz implements ArchiveInterface
public static function pack($source, string $destination, bool $overwrite = false) : bool public static function pack($source, string $destination, bool $overwrite = false) : bool
{ {
$destination = \str_replace('\\', '/', $destination); $destination = \str_replace('\\', '/', $destination);
if (!$overwrite && \file_exists($destination)) { if (!$overwrite && \file_exists($destination) || !\file_exists($source)) {
return false; return false;
} }
$gz = \gzopen($destination, 'w'); $gz = \gzopen($destination, 'w');
$src = \fopen($source, 'r'); $src = \fopen($source, 'r');
if ($gz === false || $src === false) { if ($gz === false || $src === false) {
return false; return false; // @codeCoverageIgnore
} }
while (!\feof($src)) { while (!\feof($src)) {
@ -65,7 +65,7 @@ class Gz implements ArchiveInterface
$gz = \gzopen($source, 'r'); $gz = \gzopen($source, 'r');
$dest = \fopen($destination, 'w'); $dest = \fopen($destination, 'w');
if ($gz === false || $dest === false) { if ($gz === false || $dest === false) {
return false; return false; // @codeCoverageIgnore
} }
while (!\gzeof($gz)) { while (!\gzeof($gz)) {

View File

@ -33,7 +33,8 @@ class TarGz implements ArchiveInterface
*/ */
public static function pack($source, string $destination, bool $overwrite = false) : bool public static function pack($source, string $destination, bool $overwrite = false) : bool
{ {
if (!$overwrite && \file_exists($destination)) { $destination = \str_replace('\\', '/', $destination);
if (!$overwrite && \file_exists($destination) || !\file_exists($source)) {
return false; return false;
} }
@ -52,7 +53,8 @@ class TarGz implements ArchiveInterface
*/ */
public static function unpack(string $source, string $destination) : bool public static function unpack(string $source, string $destination) : bool
{ {
if (!\file_exists($source)) { $destination = \str_replace('\\', '/', $destination);
if (\file_exists($destination) || !\file_exists($source)) {
return false; return false;
} }

View File

@ -299,7 +299,7 @@ final class MbStringUtils
$encodedPos = \strpos($lastChunk, '='); $encodedPos = \strpos($lastChunk, '=');
if ($encodedPos === false) { if ($encodedPos === false) {
break; break; // @codeCoverageIgnore
} }
$hex = \substr($text, $length - $reset + $encodedPos + 1, 2); $hex = \substr($text, $length - $reset + $encodedPos + 1, 2);

View File

@ -105,7 +105,7 @@ final class StringCompare
$total = 0; $total = 0;
if ($words1 === false || $words2 === false) { if ($words1 === false || $words2 === false) {
return \PHP_INT_MAX; return \PHP_INT_MAX; // @codeCoverageIgnore
} }
foreach ($words1 as $word1) { foreach ($words1 as $word1) {

View File

@ -246,7 +246,7 @@ class View extends ViewAbstract
$this->module = \substr($this->template, $start, $end - $start); $this->module = \substr($this->template, $start, $end - $start);
if ($this->module === false) { if ($this->module === false) {
$this->module = '0'; $this->module = '0'; // @codeCoverageIgnore
} }
} }
@ -274,7 +274,7 @@ class View extends ViewAbstract
$this->theme = \substr($this->template, $start, $end - $start); $this->theme = \substr($this->template, $start, $end - $start);
if ($this->theme === false) { if ($this->theme === false) {
$this->theme = '0'; $this->theme = '0'; // @codeCoverageIgnore
} }
} }

View File

@ -54,14 +54,20 @@ class AutoloaderTest extends \PHPUnit\Framework\TestCase
public function testOpcodeCacheInvalidation() : void public function testOpcodeCacheInvalidation() : void
{ {
if (!\extension_loaded('opcache')) { if (!\extension_loaded('zend opcache')
|| \ini_get('opcache.enable') !== '1'
|| \ini_get('opcache.enable_cli') !== '1'
|| \ini_get('opcache.file_cache_only') !== '0'
|| \opcache_get_status() === false
) {
$this->markTestSkipped( $this->markTestSkipped(
'The opcache extension is not available.' 'The opcache extension is not available.'
); );
} }
self::assertFalse(\opcache_is_script_cached(__DIR__ . '/TestLoad3.php'));
Autoloader::defaultAutoloader('\phpOMS\tests\TestLoad3'); Autoloader::defaultAutoloader('\phpOMS\tests\TestLoad3');
Autoloader::invalidate(__DIR__ . '/TestLoad3.php'); self::assertTrue(Autoloader::invalidate(__DIR__ . '/TestLoad3.php'));
self::assertTrue(\opcache_is_script_cached(__DIR__ . '/TestLoad3.php')); self::assertTrue(\opcache_is_script_cached(__DIR__ . '/TestLoad3.php'));
} }

View File

@ -161,7 +161,7 @@ class DispatcherTest extends \PHPUnit\Framework\TestCase
!empty( !empty(
$this->app->dispatcher->dispatch( $this->app->dispatcher->dispatch(
[ [
function($req, $resp, $data = null) { return true; }, function($app, $req, $resp, $data = null) { return true; },
'phpOMS\tests\Dispatcher\TestController:testFunction', 'phpOMS\tests\Dispatcher\TestController:testFunction',
'phpOMS\tests\Dispatcher\TestController::testFunctionStatic', 'phpOMS\tests\Dispatcher\TestController::testFunctionStatic',
], ],
@ -172,6 +172,22 @@ class DispatcherTest extends \PHPUnit\Framework\TestCase
); );
} }
public function testArrayWithData() : void
{
$localization = new Localization();
self::assertEquals([2],
$this->app->dispatcher->dispatch(
[
'dest' => function($app, $req, $resp, $data = null) { return $data; },
'data' => 2
],
new HttpRequest(new HttpUri(''), $localization),
new HttpResponse($localization)
)
);
}
/** /**
* @testdox A invalid destination type throws UnexpectedValueException * @testdox A invalid destination type throws UnexpectedValueException
* @covers phpOMS\Dispatcher\Dispatcher * @covers phpOMS\Dispatcher\Dispatcher

View File

@ -254,4 +254,44 @@ class EigenvalueDecompositionTest extends \PHPUnit\Framework\TestCase
self::assertEqualsWithDelta([1, 1], $eig->getRealEigenvalues()->toArray(), 0.1); self::assertEqualsWithDelta([1, 1], $eig->getRealEigenvalues()->toArray(), 0.1);
self::assertEqualsWithDelta([2, -2], $eig->getImagEigenvalues()->toArray(), 0.1); self::assertEqualsWithDelta([2, -2], $eig->getImagEigenvalues()->toArray(), 0.1);
} }
public function testComplexDivision() : void
{
$A = new Matrix();
$A->setMatrix([
[-2, -4, 2],
[3, 1, -4],
[4, 5, 5],
]);
$eig = new EigenvalueDecomposition($A);
self::assertEqualsWithDelta([
[-0.3569, 4.49865, 0.0],
[-4.49865, -0.3569, 0],
[0.0, 0.0, 4.7139],
], $eig->getD()->toArray(), 0.1);
self::assertEqualsWithDelta([-0.35695, -0.35695, 4.7139], $eig->getRealEigenvalues()->toArray(), 0.1);
self::assertEqualsWithDelta([4.49865, -4.49865, 0.0], $eig->getImagEigenvalues()->toArray(), 0.1);
}
public function testComplexDivision2() : void
{
$A = new Matrix();
$A->setMatrix([
[-2, 3, 2],
[-4, 1, -4],
[4, 5, 5],
]);
$eig = new EigenvalueDecomposition($A);
self::assertEqualsWithDelta([
[-2.5510, 0.0, 0.0],
[0.0, 3.27552, 4.79404],
[0.0, -4.7940, 3.27552],
], $eig->getD()->toArray(), 0.1);
self::assertEqualsWithDelta([-2.5510, 3.27552, 3.27552], $eig->getRealEigenvalues()->toArray(), 0.1);
self::assertEqualsWithDelta([0.0, 4.7940, -4.7940], $eig->getImagEigenvalues()->toArray(), 0.1);
}
} }

View File

@ -198,4 +198,11 @@ class MeasureOfDispersionTest extends \PHPUnit\Framework\TestCase
MeasureOfDispersion::empiricalVariance([]); MeasureOfDispersion::empiricalVariance([]);
} }
public function testInvalidSampleCovarianceDimension() : void
{
$this->expectException(\phpOMS\Math\Exception\ZeroDivisionException::class);
MeasureOfDispersion::sampleCovariance([], []);
}
} }

View File

@ -25,7 +25,7 @@ class TagTest extends \PHPUnit\Framework\TestCase
{ {
/** /**
* @testdox The tag has the expected default values after initialization * @testdox The tag has the expected default values after initialization
* @covers phpOMS\Utils\Git\Repository * @covers phpOMS\Utils\Git\Tag
* @group framework * @group framework
*/ */
public function testDefault() : void public function testDefault() : void
@ -37,7 +37,7 @@ class TagTest extends \PHPUnit\Framework\TestCase
/** /**
* @testdox The tag name can be set during initialization and returned * @testdox The tag name can be set during initialization and returned
* @covers phpOMS\Utils\Git\Repository * @covers phpOMS\Utils\Git\Tag
* @group framework * @group framework
*/ */
public function testConstructorInputOutput() : void public function testConstructorInputOutput() : void
@ -48,7 +48,7 @@ class TagTest extends \PHPUnit\Framework\TestCase
/** /**
* @testdox The message can be set and returned * @testdox The message can be set and returned
* @covers phpOMS\Utils\Git\Repository * @covers phpOMS\Utils\Git\Tag
* @group framework * @group framework
*/ */
public function testMessageInputOutput() : void public function testMessageInputOutput() : void

View File

@ -44,6 +44,7 @@ class TarTest extends \PHPUnit\Framework\TestCase
__DIR__ . '/test a.txt' => 'test a.txt', __DIR__ . '/test a.txt' => 'test a.txt',
__DIR__ . '/test b.md' => 'test b.md', __DIR__ . '/test b.md' => 'test b.md',
__DIR__ . '/test' => 'test', __DIR__ . '/test' => 'test',
__DIR__ . '/invalid.txt',
], ],
__DIR__ . '/test.tar' __DIR__ . '/test.tar'
)); ));

View File

@ -45,6 +45,7 @@ class ZipTest extends \PHPUnit\Framework\TestCase
__DIR__ . '/test b.md' => 'test b.md', __DIR__ . '/test b.md' => 'test b.md',
__DIR__ . '/invalid.so' => 'invalid.so', __DIR__ . '/invalid.so' => 'invalid.so',
__DIR__ . '/test' => 'test', __DIR__ . '/test' => 'test',
__DIR__ . '/invalid.txt',
], ],
__DIR__ . '/test.zip' __DIR__ . '/test.zip'
)); ));