-
Jan Kuchař authoredJan Kuchař authored
fn.assertSignature.primitives.phpt 1.14 KiB
<?php declare(strict_types=1);
namespace MyTestNamespace;
require __DIR__ . '/bootstrap.php';
require __DIR__ . '/testClasses.php';
use function Grifart\AssertFunction\{assertSignature, nullable, params};
use Grifart\AssertFunction\FunctionSignatureAssertionError;
use Tester\Assert;
$place = 'tests/' . basename(__FILE__) . ':' . (__LINE__ +2) . ' ';
$fn = function(string $p1, ?int $p2): void {};
assertSignature($fn, params('string', '?int'), 'void');
assertSignature($fn, params('string', nullable('int')), 'void');
assertSignature($fn, params('string', nullable('int')), NULL); // no-return type expectations
// parameter nullability
Assert::exception(
function () use ($fn) {
assertSignature($fn, params(nullable('string'), 'int'), NULL); // no-return type expectations
},
FunctionSignatureAssertionError::class,
$place . 'Parameter #1 ($p1) is expected to be nullable. But it is required.'
);
// return-type mismatch
Assert::exception(
function () use ($fn) {
assertSignature($fn, params('string', '?int'), 'int');
},
FunctionSignatureAssertionError::class,
$place . "Expected return type of type 'int', but given function declares 'void'."
);