Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Assert.php

class Assert

Same name in this branch
  1. 11.1.x vendor/webmozart/assert/src/Assert.php \Webmozart\Assert\Assert

@no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit

Hierarchy

  • class \PHPUnit\Framework\Assert

Expanded class hierarchy of Assert

4 files declare their use of Assert
ConstraintValidatorTestCase.php in vendor/symfony/validator/Test/ConstraintValidatorTestCase.php
PhptTestCase.php in vendor/phpunit/phpunit/src/Runner/PhptTestCase.php
Reflection.php in vendor/phpunit/phpunit/src/Util/Reflection.php
TesterTrait.php in vendor/symfony/console/Tester/TesterTrait.php
1 string reference to 'Assert'
AssertTypeSpecifyingExtensionHelper::trimName in vendor/phpstan/phpstan-phpunit/src/Type/PHPUnit/Assert/AssertTypeSpecifyingExtensionHelper.php

File

vendor/phpunit/phpunit/src/Framework/Assert.php, line 71

Namespace

PHPUnit\Framework
View source
abstract class Assert {
    private static int $count = 0;
    
    /**
     * Asserts that an array has a specified key.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     */
    public static final function assertArrayHasKey(int|string $key, array|ArrayAccess $array, string $message = '') : void {
        $constraint = new ArrayHasKey($key);
        static::assertThat($array, $constraint, $message);
    }
    
    /**
     * Asserts that an array does not have a specified key.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     */
    public static final function assertArrayNotHasKey(int|string $key, array|ArrayAccess $array, string $message = '') : void {
        $constraint = new LogicalNot(new ArrayHasKey($key));
        static::assertThat($array, $constraint, $message);
    }
    
    /**
     * @throws ExpectationFailedException
     */
    public static final function assertIsList(mixed $array, string $message = '') : void {
        static::assertThat($array, new IsList(), $message);
    }
    
    /**
     * Asserts that a haystack contains a needle.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     */
    public static final function assertContains(mixed $needle, iterable $haystack, string $message = '') : void {
        $constraint = new TraversableContainsIdentical($needle);
        static::assertThat($haystack, $constraint, $message);
    }
    
    /**
     * @throws ExpectationFailedException
     */
    public static final function assertContainsEquals(mixed $needle, iterable $haystack, string $message = '') : void {
        $constraint = new TraversableContainsEqual($needle);
        static::assertThat($haystack, $constraint, $message);
    }
    
    /**
     * Asserts that a haystack does not contain a needle.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     */
    public static final function assertNotContains(mixed $needle, iterable $haystack, string $message = '') : void {
        $constraint = new LogicalNot(new TraversableContainsIdentical($needle));
        static::assertThat($haystack, $constraint, $message);
    }
    
    /**
     * @throws ExpectationFailedException
     */
    public static final function assertNotContainsEquals(mixed $needle, iterable $haystack, string $message = '') : void {
        $constraint = new LogicalNot(new TraversableContainsEqual($needle));
        static::assertThat($haystack, $constraint, $message);
    }
    
    /**
     * Asserts that a haystack contains only values of a given type.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     */
    public static final function assertContainsOnly(string $type, iterable $haystack, ?bool $isNativeType = null, string $message = '') : void {
        if ($isNativeType === null) {
            $isNativeType = self::isNativeType($type);
        }
        static::assertThat($haystack, new TraversableContainsOnly($type, $isNativeType), $message);
    }
    
    /**
     * Asserts that a haystack contains only instances of a given class name.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     */
    public static final function assertContainsOnlyInstancesOf(string $className, iterable $haystack, string $message = '') : void {
        static::assertThat($haystack, new TraversableContainsOnly($className, false), $message);
    }
    
    /**
     * Asserts that a haystack does not contain only values of a given type.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     */
    public static final function assertNotContainsOnly(string $type, iterable $haystack, ?bool $isNativeType = null, string $message = '') : void {
        if ($isNativeType === null) {
            $isNativeType = self::isNativeType($type);
        }
        static::assertThat($haystack, new LogicalNot(new TraversableContainsOnly($type, $isNativeType)), $message);
    }
    
    /**
     * Asserts the number of elements of an array, Countable or Traversable.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     * @throws GeneratorNotSupportedException
     */
    public static final function assertCount(int $expectedCount, Countable|iterable $haystack, string $message = '') : void {
        if ($haystack instanceof Generator) {
            throw GeneratorNotSupportedException::fromParameterName('$haystack');
        }
        static::assertThat($haystack, new Count($expectedCount), $message);
    }
    
    /**
     * Asserts the number of elements of an array, Countable or Traversable.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     * @throws GeneratorNotSupportedException
     */
    public static final function assertNotCount(int $expectedCount, Countable|iterable $haystack, string $message = '') : void {
        if ($haystack instanceof Generator) {
            throw GeneratorNotSupportedException::fromParameterName('$haystack');
        }
        $constraint = new LogicalNot(new Count($expectedCount));
        static::assertThat($haystack, $constraint, $message);
    }
    
    /**
     * Asserts that two variables are equal.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertEquals(mixed $expected, mixed $actual, string $message = '') : void {
        $constraint = new IsEqual($expected);
        static::assertThat($actual, $constraint, $message);
    }
    
    /**
     * Asserts that two variables are equal (canonicalizing).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertEqualsCanonicalizing(mixed $expected, mixed $actual, string $message = '') : void {
        $constraint = new IsEqualCanonicalizing($expected);
        static::assertThat($actual, $constraint, $message);
    }
    
    /**
     * Asserts that two variables are equal (ignoring case).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertEqualsIgnoringCase(mixed $expected, mixed $actual, string $message = '') : void {
        $constraint = new IsEqualIgnoringCase($expected);
        static::assertThat($actual, $constraint, $message);
    }
    
    /**
     * Asserts that two variables are equal (with delta).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertEqualsWithDelta(mixed $expected, mixed $actual, float $delta, string $message = '') : void {
        $constraint = new IsEqualWithDelta($expected, $delta);
        static::assertThat($actual, $constraint, $message);
    }
    
    /**
     * Asserts that two variables are not equal.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertNotEquals(mixed $expected, mixed $actual, string $message = '') : void {
        $constraint = new LogicalNot(new IsEqual($expected));
        static::assertThat($actual, $constraint, $message);
    }
    
    /**
     * Asserts that two variables are not equal (canonicalizing).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertNotEqualsCanonicalizing(mixed $expected, mixed $actual, string $message = '') : void {
        $constraint = new LogicalNot(new IsEqualCanonicalizing($expected));
        static::assertThat($actual, $constraint, $message);
    }
    
    /**
     * Asserts that two variables are not equal (ignoring case).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertNotEqualsIgnoringCase(mixed $expected, mixed $actual, string $message = '') : void {
        $constraint = new LogicalNot(new IsEqualIgnoringCase($expected));
        static::assertThat($actual, $constraint, $message);
    }
    
    /**
     * Asserts that two variables are not equal (with delta).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertNotEqualsWithDelta(mixed $expected, mixed $actual, float $delta, string $message = '') : void {
        $constraint = new LogicalNot(new IsEqualWithDelta($expected, $delta));
        static::assertThat($actual, $constraint, $message);
    }
    
    /**
     * @throws ExpectationFailedException
     */
    public static final function assertObjectEquals(object $expected, object $actual, string $method = 'equals', string $message = '') : void {
        static::assertThat($actual, static::objectEquals($expected, $method), $message);
    }
    
    /**
     * Asserts that a variable is empty.
     *
     * @throws ExpectationFailedException
     * @throws GeneratorNotSupportedException
     *
     * @psalm-assert empty $actual
     */
    public static final function assertEmpty(mixed $actual, string $message = '') : void {
        if ($actual instanceof Generator) {
            throw GeneratorNotSupportedException::fromParameterName('$actual');
        }
        static::assertThat($actual, static::isEmpty(), $message);
    }
    
    /**
     * Asserts that a variable is not empty.
     *
     * @throws ExpectationFailedException
     * @throws GeneratorNotSupportedException
     *
     * @psalm-assert !empty $actual
     */
    public static final function assertNotEmpty(mixed $actual, string $message = '') : void {
        if ($actual instanceof Generator) {
            throw GeneratorNotSupportedException::fromParameterName('$actual');
        }
        static::assertThat($actual, static::logicalNot(static::isEmpty()), $message);
    }
    
    /**
     * Asserts that a value is greater than another value.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertGreaterThan(mixed $expected, mixed $actual, string $message = '') : void {
        static::assertThat($actual, static::greaterThan($expected), $message);
    }
    
    /**
     * Asserts that a value is greater than or equal to another value.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertGreaterThanOrEqual(mixed $expected, mixed $actual, string $message = '') : void {
        static::assertThat($actual, static::greaterThanOrEqual($expected), $message);
    }
    
    /**
     * Asserts that a value is smaller than another value.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertLessThan(mixed $expected, mixed $actual, string $message = '') : void {
        static::assertThat($actual, static::lessThan($expected), $message);
    }
    
    /**
     * Asserts that a value is smaller than or equal to another value.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertLessThanOrEqual(mixed $expected, mixed $actual, string $message = '') : void {
        static::assertThat($actual, static::lessThanOrEqual($expected), $message);
    }
    
    /**
     * Asserts that the contents of one file is equal to the contents of another
     * file.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileEquals(string $expected, string $actual, string $message = '') : void {
        static::assertFileExists($expected, $message);
        static::assertFileExists($actual, $message);
        $constraint = new IsEqual(file_get_contents($expected));
        static::assertThat(file_get_contents($actual), $constraint, $message);
    }
    
    /**
     * Asserts that the contents of one file is equal to the contents of another
     * file (canonicalizing).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileEqualsCanonicalizing(string $expected, string $actual, string $message = '') : void {
        static::assertFileExists($expected, $message);
        static::assertFileExists($actual, $message);
        $constraint = new IsEqualCanonicalizing(file_get_contents($expected));
        static::assertThat(file_get_contents($actual), $constraint, $message);
    }
    
    /**
     * Asserts that the contents of one file is equal to the contents of another
     * file (ignoring case).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileEqualsIgnoringCase(string $expected, string $actual, string $message = '') : void {
        static::assertFileExists($expected, $message);
        static::assertFileExists($actual, $message);
        $constraint = new IsEqualIgnoringCase(file_get_contents($expected));
        static::assertThat(file_get_contents($actual), $constraint, $message);
    }
    
    /**
     * Asserts that the contents of one file is not equal to the contents of
     * another file.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileNotEquals(string $expected, string $actual, string $message = '') : void {
        static::assertFileExists($expected, $message);
        static::assertFileExists($actual, $message);
        $constraint = new LogicalNot(new IsEqual(file_get_contents($expected)));
        static::assertThat(file_get_contents($actual), $constraint, $message);
    }
    
    /**
     * Asserts that the contents of one file is not equal to the contents of another
     * file (canonicalizing).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileNotEqualsCanonicalizing(string $expected, string $actual, string $message = '') : void {
        static::assertFileExists($expected, $message);
        static::assertFileExists($actual, $message);
        $constraint = new LogicalNot(new IsEqualCanonicalizing(file_get_contents($expected)));
        static::assertThat(file_get_contents($actual), $constraint, $message);
    }
    
    /**
     * Asserts that the contents of one file is not equal to the contents of another
     * file (ignoring case).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileNotEqualsIgnoringCase(string $expected, string $actual, string $message = '') : void {
        static::assertFileExists($expected, $message);
        static::assertFileExists($actual, $message);
        $constraint = new LogicalNot(new IsEqualIgnoringCase(file_get_contents($expected)));
        static::assertThat(file_get_contents($actual), $constraint, $message);
    }
    
    /**
     * Asserts that the contents of a string is equal
     * to the contents of a file.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertStringEqualsFile(string $expectedFile, string $actualString, string $message = '') : void {
        static::assertFileExists($expectedFile, $message);
        $constraint = new IsEqual(file_get_contents($expectedFile));
        static::assertThat($actualString, $constraint, $message);
    }
    
    /**
     * Asserts that the contents of a string is equal
     * to the contents of a file (canonicalizing).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertStringEqualsFileCanonicalizing(string $expectedFile, string $actualString, string $message = '') : void {
        static::assertFileExists($expectedFile, $message);
        $constraint = new IsEqualCanonicalizing(file_get_contents($expectedFile));
        static::assertThat($actualString, $constraint, $message);
    }
    
    /**
     * Asserts that the contents of a string is equal
     * to the contents of a file (ignoring case).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertStringEqualsFileIgnoringCase(string $expectedFile, string $actualString, string $message = '') : void {
        static::assertFileExists($expectedFile, $message);
        $constraint = new IsEqualIgnoringCase(file_get_contents($expectedFile));
        static::assertThat($actualString, $constraint, $message);
    }
    
    /**
     * Asserts that the contents of a string is not equal
     * to the contents of a file.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertStringNotEqualsFile(string $expectedFile, string $actualString, string $message = '') : void {
        static::assertFileExists($expectedFile, $message);
        $constraint = new LogicalNot(new IsEqual(file_get_contents($expectedFile)));
        static::assertThat($actualString, $constraint, $message);
    }
    
    /**
     * Asserts that the contents of a string is not equal
     * to the contents of a file (canonicalizing).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertStringNotEqualsFileCanonicalizing(string $expectedFile, string $actualString, string $message = '') : void {
        static::assertFileExists($expectedFile, $message);
        $constraint = new LogicalNot(new IsEqualCanonicalizing(file_get_contents($expectedFile)));
        static::assertThat($actualString, $constraint, $message);
    }
    
    /**
     * Asserts that the contents of a string is not equal
     * to the contents of a file (ignoring case).
     *
     * @throws ExpectationFailedException
     */
    public static final function assertStringNotEqualsFileIgnoringCase(string $expectedFile, string $actualString, string $message = '') : void {
        static::assertFileExists($expectedFile, $message);
        $constraint = new LogicalNot(new IsEqualIgnoringCase(file_get_contents($expectedFile)));
        static::assertThat($actualString, $constraint, $message);
    }
    
    /**
     * Asserts that a file/dir is readable.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertIsReadable(string $filename, string $message = '') : void {
        static::assertThat($filename, new IsReadable(), $message);
    }
    
    /**
     * Asserts that a file/dir exists and is not readable.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertIsNotReadable(string $filename, string $message = '') : void {
        static::assertThat($filename, new LogicalNot(new IsReadable()), $message);
    }
    
    /**
     * Asserts that a file/dir exists and is writable.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertIsWritable(string $filename, string $message = '') : void {
        static::assertThat($filename, new IsWritable(), $message);
    }
    
    /**
     * Asserts that a file/dir exists and is not writable.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertIsNotWritable(string $filename, string $message = '') : void {
        static::assertThat($filename, new LogicalNot(new IsWritable()), $message);
    }
    
    /**
     * Asserts that a directory exists.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertDirectoryExists(string $directory, string $message = '') : void {
        static::assertThat($directory, new DirectoryExists(), $message);
    }
    
    /**
     * Asserts that a directory does not exist.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertDirectoryDoesNotExist(string $directory, string $message = '') : void {
        static::assertThat($directory, new LogicalNot(new DirectoryExists()), $message);
    }
    
    /**
     * Asserts that a directory exists and is readable.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertDirectoryIsReadable(string $directory, string $message = '') : void {
        self::assertDirectoryExists($directory, $message);
        self::assertIsReadable($directory, $message);
    }
    
    /**
     * Asserts that a directory exists and is not readable.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertDirectoryIsNotReadable(string $directory, string $message = '') : void {
        self::assertDirectoryExists($directory, $message);
        self::assertIsNotReadable($directory, $message);
    }
    
    /**
     * Asserts that a directory exists and is writable.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertDirectoryIsWritable(string $directory, string $message = '') : void {
        self::assertDirectoryExists($directory, $message);
        self::assertIsWritable($directory, $message);
    }
    
    /**
     * Asserts that a directory exists and is not writable.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertDirectoryIsNotWritable(string $directory, string $message = '') : void {
        self::assertDirectoryExists($directory, $message);
        self::assertIsNotWritable($directory, $message);
    }
    
    /**
     * Asserts that a file exists.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileExists(string $filename, string $message = '') : void {
        static::assertThat($filename, new FileExists(), $message);
    }
    
    /**
     * Asserts that a file does not exist.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileDoesNotExist(string $filename, string $message = '') : void {
        static::assertThat($filename, new LogicalNot(new FileExists()), $message);
    }
    
    /**
     * Asserts that a file exists and is readable.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileIsReadable(string $file, string $message = '') : void {
        self::assertFileExists($file, $message);
        self::assertIsReadable($file, $message);
    }
    
    /**
     * Asserts that a file exists and is not readable.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileIsNotReadable(string $file, string $message = '') : void {
        self::assertFileExists($file, $message);
        self::assertIsNotReadable($file, $message);
    }
    
    /**
     * Asserts that a file exists and is writable.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileIsWritable(string $file, string $message = '') : void {
        self::assertFileExists($file, $message);
        self::assertIsWritable($file, $message);
    }
    
    /**
     * Asserts that a file exists and is not writable.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileIsNotWritable(string $file, string $message = '') : void {
        self::assertFileExists($file, $message);
        self::assertIsNotWritable($file, $message);
    }
    
    /**
     * Asserts that a condition is true.
     *
     * @throws ExpectationFailedException
     *
     * @psalm-assert true $condition
     */
    public static final function assertTrue(mixed $condition, string $message = '') : void {
        static::assertThat($condition, static::isTrue(), $message);
    }
    
    /**
     * Asserts that a condition is not true.
     *
     * @throws ExpectationFailedException
     *
     * @psalm-assert !true $condition
     */
    public static final function assertNotTrue(mixed $condition, string $message = '') : void {
        static::assertThat($condition, static::logicalNot(static::isTrue()), $message);
    }
    
    /**
     * Asserts that a condition is false.
     *
     * @throws ExpectationFailedException
     *
     * @psalm-assert false $condition
     */
    public static final function assertFalse(mixed $condition, string $message = '') : void {
        static::assertThat($condition, static::isFalse(), $message);
    }
    
    /**
     * Asserts that a condition is not false.
     *
     * @throws ExpectationFailedException
     *
     * @psalm-assert !false $condition
     */
    public static final function assertNotFalse(mixed $condition, string $message = '') : void {
        static::assertThat($condition, static::logicalNot(static::isFalse()), $message);
    }
    
    /**
     * Asserts that a variable is null.
     *
     * @throws ExpectationFailedException
     *
     * @psalm-assert null $actual
     */
    public static final function assertNull(mixed $actual, string $message = '') : void {
        static::assertThat($actual, static::isNull(), $message);
    }
    
    /**
     * Asserts that a variable is not null.
     *
     * @throws ExpectationFailedException
     *
     * @psalm-assert !null $actual
     */
    public static final function assertNotNull(mixed $actual, string $message = '') : void {
        static::assertThat($actual, static::logicalNot(static::isNull()), $message);
    }
    
    /**
     * Asserts that a variable is finite.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFinite(mixed $actual, string $message = '') : void {
        static::assertThat($actual, static::isFinite(), $message);
    }
    
    /**
     * Asserts that a variable is infinite.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertInfinite(mixed $actual, string $message = '') : void {
        static::assertThat($actual, static::isInfinite(), $message);
    }
    
    /**
     * Asserts that a variable is nan.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertNan(mixed $actual, string $message = '') : void {
        static::assertThat($actual, static::isNan(), $message);
    }
    
    /**
     * Asserts that an object has a specified property.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertObjectHasProperty(string $propertyName, object $object, string $message = '') : void {
        static::assertThat($object, new ObjectHasProperty($propertyName), $message);
    }
    
    /**
     * Asserts that an object does not have a specified property.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertObjectNotHasProperty(string $propertyName, object $object, string $message = '') : void {
        static::assertThat($object, new LogicalNot(new ObjectHasProperty($propertyName)), $message);
    }
    
    /**
     * Asserts that two variables have the same type and value.
     * Used on objects, it asserts that two variables reference
     * the same object.
     *
     * @throws ExpectationFailedException
     *
     * @psalm-template ExpectedType
     *
     * @psalm-param ExpectedType $expected
     *
     * @psalm-assert =ExpectedType $actual
     */
    public static final function assertSame(mixed $expected, mixed $actual, string $message = '') : void {
        static::assertThat($actual, new IsIdentical($expected), $message);
    }
    
    /**
     * Asserts that two variables do not have the same type and value.
     * Used on objects, it asserts that two variables do not reference
     * the same object.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertNotSame(mixed $expected, mixed $actual, string $message = '') : void {
        if (is_bool($expected) && is_bool($actual)) {
            static::assertNotEquals($expected, $actual, $message);
        }
        static::assertThat($actual, new LogicalNot(new IsIdentical($expected)), $message);
    }
    
    /**
     * Asserts that a variable is of a given type.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     * @throws UnknownClassOrInterfaceException
     *
     * @psalm-template ExpectedType of object
     *
     * @psalm-param class-string<ExpectedType> $expected
     *
     * @psalm-assert =ExpectedType $actual
     */
    public static final function assertInstanceOf(string $expected, mixed $actual, string $message = '') : void {
        if (!class_exists($expected) && !interface_exists($expected)) {
            throw new UnknownClassOrInterfaceException($expected);
        }
        static::assertThat($actual, new IsInstanceOf($expected), $message);
    }
    
    /**
     * Asserts that a variable is not of a given type.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-template ExpectedType of object
     *
     * @psalm-param class-string<ExpectedType> $expected
     *
     * @psalm-assert !ExpectedType $actual
     */
    public static final function assertNotInstanceOf(string $expected, mixed $actual, string $message = '') : void {
        if (!class_exists($expected) && !interface_exists($expected)) {
            throw new UnknownClassOrInterfaceException($expected);
        }
        static::assertThat($actual, new LogicalNot(new IsInstanceOf($expected)), $message);
    }
    
    /**
     * Asserts that a variable is of type array.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert array $actual
     */
    public static final function assertIsArray(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new IsType(IsType::TYPE_ARRAY), $message);
    }
    
    /**
     * Asserts that a variable is of type bool.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert bool $actual
     */
    public static final function assertIsBool(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new IsType(IsType::TYPE_BOOL), $message);
    }
    
    /**
     * Asserts that a variable is of type float.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert float $actual
     */
    public static final function assertIsFloat(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new IsType(IsType::TYPE_FLOAT), $message);
    }
    
    /**
     * Asserts that a variable is of type int.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert int $actual
     */
    public static final function assertIsInt(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new IsType(IsType::TYPE_INT), $message);
    }
    
    /**
     * Asserts that a variable is of type numeric.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert numeric $actual
     */
    public static final function assertIsNumeric(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new IsType(IsType::TYPE_NUMERIC), $message);
    }
    
    /**
     * Asserts that a variable is of type object.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert object $actual
     */
    public static final function assertIsObject(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new IsType(IsType::TYPE_OBJECT), $message);
    }
    
    /**
     * Asserts that a variable is of type resource.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert resource $actual
     */
    public static final function assertIsResource(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new IsType(IsType::TYPE_RESOURCE), $message);
    }
    
    /**
     * Asserts that a variable is of type resource and is closed.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert resource $actual
     */
    public static final function assertIsClosedResource(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new IsType(IsType::TYPE_CLOSED_RESOURCE), $message);
    }
    
    /**
     * Asserts that a variable is of type string.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert string $actual
     */
    public static final function assertIsString(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new IsType(IsType::TYPE_STRING), $message);
    }
    
    /**
     * Asserts that a variable is of type scalar.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert scalar $actual
     */
    public static final function assertIsScalar(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new IsType(IsType::TYPE_SCALAR), $message);
    }
    
    /**
     * Asserts that a variable is of type callable.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert callable $actual
     */
    public static final function assertIsCallable(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new IsType(IsType::TYPE_CALLABLE), $message);
    }
    
    /**
     * Asserts that a variable is of type iterable.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert iterable $actual
     */
    public static final function assertIsIterable(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new IsType(IsType::TYPE_ITERABLE), $message);
    }
    
    /**
     * Asserts that a variable is not of type array.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert !array $actual
     */
    public static final function assertIsNotArray(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new LogicalNot(new IsType(IsType::TYPE_ARRAY)), $message);
    }
    
    /**
     * Asserts that a variable is not of type bool.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert !bool $actual
     */
    public static final function assertIsNotBool(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new LogicalNot(new IsType(IsType::TYPE_BOOL)), $message);
    }
    
    /**
     * Asserts that a variable is not of type float.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert !float $actual
     */
    public static final function assertIsNotFloat(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new LogicalNot(new IsType(IsType::TYPE_FLOAT)), $message);
    }
    
    /**
     * Asserts that a variable is not of type int.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert !int $actual
     */
    public static final function assertIsNotInt(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new LogicalNot(new IsType(IsType::TYPE_INT)), $message);
    }
    
    /**
     * Asserts that a variable is not of type numeric.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert !numeric $actual
     */
    public static final function assertIsNotNumeric(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new LogicalNot(new IsType(IsType::TYPE_NUMERIC)), $message);
    }
    
    /**
     * Asserts that a variable is not of type object.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert !object $actual
     */
    public static final function assertIsNotObject(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new LogicalNot(new IsType(IsType::TYPE_OBJECT)), $message);
    }
    
    /**
     * Asserts that a variable is not of type resource.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert !resource $actual
     */
    public static final function assertIsNotResource(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new LogicalNot(new IsType(IsType::TYPE_RESOURCE)), $message);
    }
    
    /**
     * Asserts that a variable is not of type resource.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert !resource $actual
     */
    public static final function assertIsNotClosedResource(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new LogicalNot(new IsType(IsType::TYPE_CLOSED_RESOURCE)), $message);
    }
    
    /**
     * Asserts that a variable is not of type string.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert !string $actual
     */
    public static final function assertIsNotString(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new LogicalNot(new IsType(IsType::TYPE_STRING)), $message);
    }
    
    /**
     * Asserts that a variable is not of type scalar.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert !scalar $actual
     */
    public static final function assertIsNotScalar(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new LogicalNot(new IsType(IsType::TYPE_SCALAR)), $message);
    }
    
    /**
     * Asserts that a variable is not of type callable.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert !callable $actual
     */
    public static final function assertIsNotCallable(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new LogicalNot(new IsType(IsType::TYPE_CALLABLE)), $message);
    }
    
    /**
     * Asserts that a variable is not of type iterable.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     *
     * @psalm-assert !iterable $actual
     */
    public static final function assertIsNotIterable(mixed $actual, string $message = '') : void {
        static::assertThat($actual, new LogicalNot(new IsType(IsType::TYPE_ITERABLE)), $message);
    }
    
    /**
     * Asserts that a string matches a given regular expression.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertMatchesRegularExpression(string $pattern, string $string, string $message = '') : void {
        static::assertThat($string, new RegularExpression($pattern), $message);
    }
    
    /**
     * Asserts that a string does not match a given regular expression.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertDoesNotMatchRegularExpression(string $pattern, string $string, string $message = '') : void {
        static::assertThat($string, new LogicalNot(new RegularExpression($pattern)), $message);
    }
    
    /**
     * Assert that the size of two arrays (or `Countable` or `Traversable` objects)
     * is the same.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     * @throws GeneratorNotSupportedException
     */
    public static final function assertSameSize(Countable|iterable $expected, Countable|iterable $actual, string $message = '') : void {
        if ($expected instanceof Generator) {
            throw GeneratorNotSupportedException::fromParameterName('$expected');
        }
        if ($actual instanceof Generator) {
            throw GeneratorNotSupportedException::fromParameterName('$actual');
        }
        static::assertThat($actual, new SameSize($expected), $message);
    }
    
    /**
     * Assert that the size of two arrays (or `Countable` or `Traversable` objects)
     * is not the same.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     * @throws GeneratorNotSupportedException
     */
    public static final function assertNotSameSize(Countable|iterable $expected, Countable|iterable $actual, string $message = '') : void {
        if ($expected instanceof Generator) {
            throw GeneratorNotSupportedException::fromParameterName('$expected');
        }
        if ($actual instanceof Generator) {
            throw GeneratorNotSupportedException::fromParameterName('$actual');
        }
        static::assertThat($actual, new LogicalNot(new SameSize($expected)), $message);
    }
    
    /**
     * @throws ExpectationFailedException
     */
    public static final function assertStringContainsStringIgnoringLineEndings(string $needle, string $haystack, string $message = '') : void {
        static::assertThat($haystack, new StringContains($needle, false, true), $message);
    }
    
    /**
     * Asserts that two strings are equal except for line endings.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertStringEqualsStringIgnoringLineEndings(string $expected, string $actual, string $message = '') : void {
        static::assertThat($actual, new StringEqualsStringIgnoringLineEndings($expected), $message);
    }
    
    /**
     * Asserts that a string matches a given format string.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileMatchesFormat(string $format, string $actualFile, string $message = '') : void {
        static::assertFileExists($actualFile, $message);
        static::assertThat(file_get_contents($actualFile), new StringMatchesFormatDescription($format), $message);
    }
    
    /**
     * Asserts that a string matches a given format string.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertFileMatchesFormatFile(string $formatFile, string $actualFile, string $message = '') : void {
        static::assertFileExists($formatFile, $message);
        static::assertFileExists($actualFile, $message);
        static::assertThat(file_get_contents($actualFile), new StringMatchesFormatDescription(file_get_contents($formatFile)), $message);
    }
    
    /**
     * Asserts that a string matches a given format string.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertStringMatchesFormat(string $format, string $string, string $message = '') : void {
        static::assertThat($string, new StringMatchesFormatDescription($format), $message);
    }
    
    /**
     * Asserts that a string does not match a given format string.
     *
     * @throws ExpectationFailedException
     *
     * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5472
     */
    public static final function assertStringNotMatchesFormat(string $format, string $string, string $message = '') : void {
        static::assertThat($string, new LogicalNot(new StringMatchesFormatDescription($format)), $message);
    }
    
    /**
     * Asserts that a string matches a given format file.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertStringMatchesFormatFile(string $formatFile, string $string, string $message = '') : void {
        static::assertFileExists($formatFile, $message);
        static::assertThat($string, new StringMatchesFormatDescription(file_get_contents($formatFile)), $message);
    }
    
    /**
     * Asserts that a string does not match a given format string.
     *
     * @throws ExpectationFailedException
     *
     * @deprecated https://github.com/sebastianbergmann/phpunit/issues/5472
     */
    public static final function assertStringNotMatchesFormatFile(string $formatFile, string $string, string $message = '') : void {
        static::assertFileExists($formatFile, $message);
        static::assertThat($string, new LogicalNot(new StringMatchesFormatDescription(file_get_contents($formatFile))), $message);
    }
    
    /**
     * Asserts that a string starts with a given prefix.
     *
     * @psalm-param non-empty-string $prefix
     *
     * @throws ExpectationFailedException
     * @throws InvalidArgumentException
     */
    public static final function assertStringStartsWith(string $prefix, string $string, string $message = '') : void {
        static::assertThat($string, new StringStartsWith($prefix), $message);
    }
    
    /**
     * Asserts that a string starts not with a given prefix.
     *
     * @psalm-param non-empty-string $prefix
     *
     * @throws ExpectationFailedException
     * @throws InvalidArgumentException
     */
    public static final function assertStringStartsNotWith(string $prefix, string $string, string $message = '') : void {
        static::assertThat($string, new LogicalNot(new StringStartsWith($prefix)), $message);
    }
    
    /**
     * @throws ExpectationFailedException
     */
    public static final function assertStringContainsString(string $needle, string $haystack, string $message = '') : void {
        $constraint = new StringContains($needle);
        static::assertThat($haystack, $constraint, $message);
    }
    
    /**
     * @throws ExpectationFailedException
     */
    public static final function assertStringContainsStringIgnoringCase(string $needle, string $haystack, string $message = '') : void {
        $constraint = new StringContains($needle, true);
        static::assertThat($haystack, $constraint, $message);
    }
    
    /**
     * @throws ExpectationFailedException
     */
    public static final function assertStringNotContainsString(string $needle, string $haystack, string $message = '') : void {
        $constraint = new LogicalNot(new StringContains($needle));
        static::assertThat($haystack, $constraint, $message);
    }
    
    /**
     * @throws ExpectationFailedException
     */
    public static final function assertStringNotContainsStringIgnoringCase(string $needle, string $haystack, string $message = '') : void {
        $constraint = new LogicalNot(new StringContains($needle, true));
        static::assertThat($haystack, $constraint, $message);
    }
    
    /**
     * Asserts that a string ends with a given suffix.
     *
     * @psalm-param non-empty-string $suffix
     *
     * @throws ExpectationFailedException
     * @throws InvalidArgumentException
     */
    public static final function assertStringEndsWith(string $suffix, string $string, string $message = '') : void {
        static::assertThat($string, new StringEndsWith($suffix), $message);
    }
    
    /**
     * Asserts that a string ends not with a given suffix.
     *
     * @psalm-param non-empty-string $suffix
     *
     * @throws ExpectationFailedException
     * @throws InvalidArgumentException
     */
    public static final function assertStringEndsNotWith(string $suffix, string $string, string $message = '') : void {
        static::assertThat($string, new LogicalNot(new StringEndsWith($suffix)), $message);
    }
    
    /**
     * Asserts that two XML files are equal.
     *
     * @throws Exception
     * @throws ExpectationFailedException
     * @throws XmlException
     */
    public static final function assertXmlFileEqualsXmlFile(string $expectedFile, string $actualFile, string $message = '') : void {
        $expected = (new XmlLoader())->loadFile($expectedFile);
        $actual = (new XmlLoader())->loadFile($actualFile);
        static::assertEquals($expected, $actual, $message);
    }
    
    /**
     * Asserts that two XML files are not equal.
     *
     * @throws \PHPUnit\Util\Exception
     * @throws ExpectationFailedException
     */
    public static final function assertXmlFileNotEqualsXmlFile(string $expectedFile, string $actualFile, string $message = '') : void {
        $expected = (new XmlLoader())->loadFile($expectedFile);
        $actual = (new XmlLoader())->loadFile($actualFile);
        static::assertNotEquals($expected, $actual, $message);
    }
    
    /**
     * Asserts that two XML documents are equal.
     *
     * @throws ExpectationFailedException
     * @throws XmlException
     */
    public static final function assertXmlStringEqualsXmlFile(string $expectedFile, string $actualXml, string $message = '') : void {
        $expected = (new XmlLoader())->loadFile($expectedFile);
        $actual = (new XmlLoader())->load($actualXml);
        static::assertEquals($expected, $actual, $message);
    }
    
    /**
     * Asserts that two XML documents are not equal.
     *
     * @throws ExpectationFailedException
     * @throws XmlException
     */
    public static final function assertXmlStringNotEqualsXmlFile(string $expectedFile, string $actualXml, string $message = '') : void {
        $expected = (new XmlLoader())->loadFile($expectedFile);
        $actual = (new XmlLoader())->load($actualXml);
        static::assertNotEquals($expected, $actual, $message);
    }
    
    /**
     * Asserts that two XML documents are equal.
     *
     * @throws ExpectationFailedException
     * @throws XmlException
     */
    public static final function assertXmlStringEqualsXmlString(string $expectedXml, string $actualXml, string $message = '') : void {
        $expected = (new XmlLoader())->load($expectedXml);
        $actual = (new XmlLoader())->load($actualXml);
        static::assertEquals($expected, $actual, $message);
    }
    
    /**
     * Asserts that two XML documents are not equal.
     *
     * @throws ExpectationFailedException
     * @throws XmlException
     */
    public static final function assertXmlStringNotEqualsXmlString(string $expectedXml, string $actualXml, string $message = '') : void {
        $expected = (new XmlLoader())->load($expectedXml);
        $actual = (new XmlLoader())->load($actualXml);
        static::assertNotEquals($expected, $actual, $message);
    }
    
    /**
     * Evaluates a PHPUnit\Framework\Constraint matcher object.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertThat(mixed $value, Constraint $constraint, string $message = '') : void {
        self::$count += count($constraint);
        $hasFailed = true;
        try {
            $constraint->evaluate($value, $message);
            $hasFailed = false;
        } finally {
            if ($hasFailed) {
                Event\Facade::emitter()->testAssertionFailed($value, $constraint, $message);
            }
            else {
                Event\Facade::emitter()->testAssertionSucceeded($value, $constraint, $message);
            }
        }
    }
    
    /**
     * Asserts that a string is a valid JSON string.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertJson(string $actual, string $message = '') : void {
        static::assertThat($actual, static::isJson(), $message);
    }
    
    /**
     * Asserts that two given JSON encoded objects or arrays are equal.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertJsonStringEqualsJsonString(string $expectedJson, string $actualJson, string $message = '') : void {
        static::assertJson($expectedJson, $message);
        static::assertJson($actualJson, $message);
        static::assertThat($actualJson, new JsonMatches($expectedJson), $message);
    }
    
    /**
     * Asserts that two given JSON encoded objects or arrays are not equal.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertJsonStringNotEqualsJsonString(string $expectedJson, string $actualJson, string $message = '') : void {
        static::assertJson($expectedJson, $message);
        static::assertJson($actualJson, $message);
        static::assertThat($actualJson, new LogicalNot(new JsonMatches($expectedJson)), $message);
    }
    
    /**
     * Asserts that the generated JSON encoded object and the content of the given file are equal.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertJsonStringEqualsJsonFile(string $expectedFile, string $actualJson, string $message = '') : void {
        static::assertFileExists($expectedFile, $message);
        $expectedJson = file_get_contents($expectedFile);
        static::assertJson($expectedJson, $message);
        static::assertJson($actualJson, $message);
        static::assertThat($actualJson, new JsonMatches($expectedJson), $message);
    }
    
    /**
     * Asserts that the generated JSON encoded object and the content of the given file are not equal.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertJsonStringNotEqualsJsonFile(string $expectedFile, string $actualJson, string $message = '') : void {
        static::assertFileExists($expectedFile, $message);
        $expectedJson = file_get_contents($expectedFile);
        static::assertJson($expectedJson, $message);
        static::assertJson($actualJson, $message);
        static::assertThat($actualJson, new LogicalNot(new JsonMatches($expectedJson)), $message);
    }
    
    /**
     * Asserts that two JSON files are equal.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertJsonFileEqualsJsonFile(string $expectedFile, string $actualFile, string $message = '') : void {
        static::assertFileExists($expectedFile, $message);
        static::assertFileExists($actualFile, $message);
        $actualJson = file_get_contents($actualFile);
        $expectedJson = file_get_contents($expectedFile);
        static::assertJson($expectedJson, $message);
        static::assertJson($actualJson, $message);
        $constraintExpected = new JsonMatches($expectedJson);
        $constraintActual = new JsonMatches($actualJson);
        static::assertThat($expectedJson, $constraintActual, $message);
        static::assertThat($actualJson, $constraintExpected, $message);
    }
    
    /**
     * Asserts that two JSON files are not equal.
     *
     * @throws ExpectationFailedException
     */
    public static final function assertJsonFileNotEqualsJsonFile(string $expectedFile, string $actualFile, string $message = '') : void {
        static::assertFileExists($expectedFile, $message);
        static::assertFileExists($actualFile, $message);
        $actualJson = file_get_contents($actualFile);
        $expectedJson = file_get_contents($expectedFile);
        static::assertJson($expectedJson, $message);
        static::assertJson($actualJson, $message);
        $constraintExpected = new JsonMatches($expectedJson);
        $constraintActual = new JsonMatches($actualJson);
        static::assertThat($expectedJson, new LogicalNot($constraintActual), $message);
        static::assertThat($actualJson, new LogicalNot($constraintExpected), $message);
    }
    
    /**
     * @throws Exception
     */
    public static final function logicalAnd(mixed ...$constraints) : LogicalAnd {
        return LogicalAnd::fromConstraints(...$constraints);
    }
    public static final function logicalOr(mixed ...$constraints) : LogicalOr {
        return LogicalOr::fromConstraints(...$constraints);
    }
    public static final function logicalNot(Constraint $constraint) : LogicalNot {
        return new LogicalNot($constraint);
    }
    public static final function logicalXor(mixed ...$constraints) : LogicalXor {
        return LogicalXor::fromConstraints(...$constraints);
    }
    public static final function anything() : IsAnything {
        return new IsAnything();
    }
    public static final function isTrue() : IsTrue {
        return new IsTrue();
    }
    
    /**
     * @psalm-template CallbackInput of mixed
     *
     * @psalm-param callable(CallbackInput $callback): bool $callback
     *
     * @psalm-return Callback<CallbackInput>
     */
    public static final function callback(callable $callback) : Callback {
        return new Callback($callback);
    }
    public static final function isFalse() : IsFalse {
        return new IsFalse();
    }
    public static final function isJson() : IsJson {
        return new IsJson();
    }
    public static final function isNull() : IsNull {
        return new IsNull();
    }
    public static final function isFinite() : IsFinite {
        return new IsFinite();
    }
    public static final function isInfinite() : IsInfinite {
        return new IsInfinite();
    }
    public static final function isNan() : IsNan {
        return new IsNan();
    }
    public static final function containsEqual(mixed $value) : TraversableContainsEqual {
        return new TraversableContainsEqual($value);
    }
    public static final function containsIdentical(mixed $value) : TraversableContainsIdentical {
        return new TraversableContainsIdentical($value);
    }
    
    /**
     * @throws Exception
     */
    public static final function containsOnly(string $type) : TraversableContainsOnly {
        return new TraversableContainsOnly($type);
    }
    
    /**
     * @throws Exception
     */
    public static final function containsOnlyInstancesOf(string $className) : TraversableContainsOnly {
        return new TraversableContainsOnly($className, false);
    }
    public static final function arrayHasKey(int|string $key) : ArrayHasKey {
        return new ArrayHasKey($key);
    }
    public static final function isList() : IsList {
        return new IsList();
    }
    public static final function equalTo(mixed $value) : IsEqual {
        return new IsEqual($value, 0.0, false, false);
    }
    public static final function equalToCanonicalizing(mixed $value) : IsEqualCanonicalizing {
        return new IsEqualCanonicalizing($value);
    }
    public static final function equalToIgnoringCase(mixed $value) : IsEqualIgnoringCase {
        return new IsEqualIgnoringCase($value);
    }
    public static final function equalToWithDelta(mixed $value, float $delta) : IsEqualWithDelta {
        return new IsEqualWithDelta($value, $delta);
    }
    public static final function isEmpty() : IsEmpty {
        return new IsEmpty();
    }
    public static final function isWritable() : IsWritable {
        return new IsWritable();
    }
    public static final function isReadable() : IsReadable {
        return new IsReadable();
    }
    public static final function directoryExists() : DirectoryExists {
        return new DirectoryExists();
    }
    public static final function fileExists() : FileExists {
        return new FileExists();
    }
    public static final function greaterThan(mixed $value) : GreaterThan {
        return new GreaterThan($value);
    }
    public static final function greaterThanOrEqual(mixed $value) : LogicalOr {
        return static::logicalOr(new IsEqual($value), new GreaterThan($value));
    }
    public static final function identicalTo(mixed $value) : IsIdentical {
        return new IsIdentical($value);
    }
    
    /**
     * @throws UnknownClassOrInterfaceException
     */
    public static final function isInstanceOf(string $className) : IsInstanceOf {
        return new IsInstanceOf($className);
    }
    
    /**
     * @psalm-param 'array'|'boolean'|'bool'|'double'|'float'|'integer'|'int'|'null'|'numeric'|'object'|'real'|'resource'|'resource (closed)'|'string'|'scalar'|'callable'|'iterable' $type
     *
     * @throws Exception
     */
    public static final function isType(string $type) : IsType {
        return new IsType($type);
    }
    public static final function lessThan(mixed $value) : LessThan {
        return new LessThan($value);
    }
    public static final function lessThanOrEqual(mixed $value) : LogicalOr {
        return static::logicalOr(new IsEqual($value), new LessThan($value));
    }
    public static final function matchesRegularExpression(string $pattern) : RegularExpression {
        return new RegularExpression($pattern);
    }
    public static final function matches(string $string) : StringMatchesFormatDescription {
        return new StringMatchesFormatDescription($string);
    }
    
    /**
     * @psalm-param non-empty-string $prefix
     *
     * @throws InvalidArgumentException
     */
    public static final function stringStartsWith(string $prefix) : StringStartsWith {
        return new StringStartsWith($prefix);
    }
    public static final function stringContains(string $string, bool $case = true) : StringContains {
        return new StringContains($string, $case);
    }
    
    /**
     * @psalm-param non-empty-string $suffix
     *
     * @throws InvalidArgumentException
     */
    public static final function stringEndsWith(string $suffix) : StringEndsWith {
        return new StringEndsWith($suffix);
    }
    public static final function stringEqualsStringIgnoringLineEndings(string $string) : StringEqualsStringIgnoringLineEndings {
        return new StringEqualsStringIgnoringLineEndings($string);
    }
    public static final function countOf(int $count) : Count {
        return new Count($count);
    }
    public static final function objectEquals(object $object, string $method = 'equals') : ObjectEquals {
        return new ObjectEquals($object, $method);
    }
    
    /**
     * Fails a test with the given message.
     *
     * @throws AssertionFailedError
     */
    public static final function fail(string $message = '') : never {
        self::$count++;
        throw new AssertionFailedError($message);
    }
    
    /**
     * Mark the test as incomplete.
     *
     * @throws IncompleteTestError
     */
    public static final function markTestIncomplete(string $message = '') : never {
        throw new IncompleteTestError($message);
    }
    
    /**
     * Mark the test as skipped.
     *
     * @throws SkippedWithMessageException
     */
    public static final function markTestSkipped(string $message = '') : never {
        throw new SkippedWithMessageException($message);
    }
    
    /**
     * Return the current assertion count.
     */
    public static final function getCount() : int {
        return self::$count;
    }
    
    /**
     * Reset the assertion counter.
     */
    public static final function resetCount() : void {
        self::$count = 0;
    }
    private static function isNativeType(string $type) : bool {
        return match ($type) {    'numeric', 'integer', 'int', 'iterable', 'float', 'string', 'boolean', 'bool', 'null', 'array', 'object', 'resource', 'scalar' => true,
            default => false,
        
        };
    }

}

Members

Title Sort descending Deprecated Modifiers Object type Summary
Assert::$count private static property
Assert::anything final public static function
Assert::arrayHasKey final public static function
Assert::assertArrayHasKey final public static function Asserts that an array has a specified key.
Assert::assertArrayNotHasKey final public static function Asserts that an array does not have a specified key.
Assert::assertContains final public static function Asserts that a haystack contains a needle.
Assert::assertContainsEquals final public static function
Assert::assertContainsOnly final public static function Asserts that a haystack contains only values of a given type.
Assert::assertContainsOnlyInstancesOf final public static function Asserts that a haystack contains only instances of a given class name.
Assert::assertCount final public static function Asserts the number of elements of an array, Countable or Traversable.
Assert::assertDirectoryDoesNotExist final public static function Asserts that a directory does not exist.
Assert::assertDirectoryExists final public static function Asserts that a directory exists.
Assert::assertDirectoryIsNotReadable final public static function Asserts that a directory exists and is not readable.
Assert::assertDirectoryIsNotWritable final public static function Asserts that a directory exists and is not writable.
Assert::assertDirectoryIsReadable final public static function Asserts that a directory exists and is readable.
Assert::assertDirectoryIsWritable final public static function Asserts that a directory exists and is writable.
Assert::assertDoesNotMatchRegularExpression final public static function Asserts that a string does not match a given regular expression.
Assert::assertEmpty final public static function Asserts that a variable is empty.
Assert::assertEquals final public static function Asserts that two variables are equal.
Assert::assertEqualsCanonicalizing final public static function Asserts that two variables are equal (canonicalizing).
Assert::assertEqualsIgnoringCase final public static function Asserts that two variables are equal (ignoring case).
Assert::assertEqualsWithDelta final public static function Asserts that two variables are equal (with delta).
Assert::assertFalse final public static function Asserts that a condition is false.
Assert::assertFileDoesNotExist final public static function Asserts that a file does not exist.
Assert::assertFileEquals final public static function Asserts that the contents of one file is equal to the contents of another
file.
Assert::assertFileEqualsCanonicalizing final public static function Asserts that the contents of one file is equal to the contents of another
file (canonicalizing).
Assert::assertFileEqualsIgnoringCase final public static function Asserts that the contents of one file is equal to the contents of another
file (ignoring case).
Assert::assertFileExists final public static function Asserts that a file exists.
Assert::assertFileIsNotReadable final public static function Asserts that a file exists and is not readable.
Assert::assertFileIsNotWritable final public static function Asserts that a file exists and is not writable.
Assert::assertFileIsReadable final public static function Asserts that a file exists and is readable.
Assert::assertFileIsWritable final public static function Asserts that a file exists and is writable.
Assert::assertFileMatchesFormat final public static function Asserts that a string matches a given format string.
Assert::assertFileMatchesFormatFile final public static function Asserts that a string matches a given format string.
Assert::assertFileNotEquals final public static function Asserts that the contents of one file is not equal to the contents of
another file.
Assert::assertFileNotEqualsCanonicalizing final public static function Asserts that the contents of one file is not equal to the contents of another
file (canonicalizing).
Assert::assertFileNotEqualsIgnoringCase final public static function Asserts that the contents of one file is not equal to the contents of another
file (ignoring case).
Assert::assertFinite final public static function Asserts that a variable is finite.
Assert::assertGreaterThan final public static function Asserts that a value is greater than another value.
Assert::assertGreaterThanOrEqual final public static function Asserts that a value is greater than or equal to another value.
Assert::assertInfinite final public static function Asserts that a variable is infinite.
Assert::assertInstanceOf final public static function Asserts that a variable is of a given type.
Assert::assertIsArray final public static function Asserts that a variable is of type array.
Assert::assertIsBool final public static function Asserts that a variable is of type bool.
Assert::assertIsCallable final public static function Asserts that a variable is of type callable.
Assert::assertIsClosedResource final public static function Asserts that a variable is of type resource and is closed.
Assert::assertIsFloat final public static function Asserts that a variable is of type float.
Assert::assertIsInt final public static function Asserts that a variable is of type int.
Assert::assertIsIterable final public static function Asserts that a variable is of type iterable.
Assert::assertIsList final public static function
Assert::assertIsNotArray final public static function Asserts that a variable is not of type array.
Assert::assertIsNotBool final public static function Asserts that a variable is not of type bool.
Assert::assertIsNotCallable final public static function Asserts that a variable is not of type callable.
Assert::assertIsNotClosedResource final public static function Asserts that a variable is not of type resource.
Assert::assertIsNotFloat final public static function Asserts that a variable is not of type float.
Assert::assertIsNotInt final public static function Asserts that a variable is not of type int.
Assert::assertIsNotIterable final public static function Asserts that a variable is not of type iterable.
Assert::assertIsNotNumeric final public static function Asserts that a variable is not of type numeric.
Assert::assertIsNotObject final public static function Asserts that a variable is not of type object.
Assert::assertIsNotReadable final public static function Asserts that a file/dir exists and is not readable.
Assert::assertIsNotResource final public static function Asserts that a variable is not of type resource.
Assert::assertIsNotScalar final public static function Asserts that a variable is not of type scalar.
Assert::assertIsNotString final public static function Asserts that a variable is not of type string.
Assert::assertIsNotWritable final public static function Asserts that a file/dir exists and is not writable.
Assert::assertIsNumeric final public static function Asserts that a variable is of type numeric.
Assert::assertIsObject final public static function Asserts that a variable is of type object.
Assert::assertIsReadable final public static function Asserts that a file/dir is readable.
Assert::assertIsResource final public static function Asserts that a variable is of type resource.
Assert::assertIsScalar final public static function Asserts that a variable is of type scalar.
Assert::assertIsString final public static function Asserts that a variable is of type string.
Assert::assertIsWritable final public static function Asserts that a file/dir exists and is writable.
Assert::assertJson final public static function Asserts that a string is a valid JSON string.
Assert::assertJsonFileEqualsJsonFile final public static function Asserts that two JSON files are equal.
Assert::assertJsonFileNotEqualsJsonFile final public static function Asserts that two JSON files are not equal.
Assert::assertJsonStringEqualsJsonFile final public static function Asserts that the generated JSON encoded object and the content of the given file are equal.
Assert::assertJsonStringEqualsJsonString final public static function Asserts that two given JSON encoded objects or arrays are equal.
Assert::assertJsonStringNotEqualsJsonFile final public static function Asserts that the generated JSON encoded object and the content of the given file are not equal.
Assert::assertJsonStringNotEqualsJsonString final public static function Asserts that two given JSON encoded objects or arrays are not equal.
Assert::assertLessThan final public static function Asserts that a value is smaller than another value.
Assert::assertLessThanOrEqual final public static function Asserts that a value is smaller than or equal to another value.
Assert::assertMatchesRegularExpression final public static function Asserts that a string matches a given regular expression.
Assert::assertNan final public static function Asserts that a variable is nan.
Assert::assertNotContains final public static function Asserts that a haystack does not contain a needle.
Assert::assertNotContainsEquals final public static function
Assert::assertNotContainsOnly final public static function Asserts that a haystack does not contain only values of a given type.
Assert::assertNotCount final public static function Asserts the number of elements of an array, Countable or Traversable.
Assert::assertNotEmpty final public static function Asserts that a variable is not empty.
Assert::assertNotEquals final public static function Asserts that two variables are not equal.
Assert::assertNotEqualsCanonicalizing final public static function Asserts that two variables are not equal (canonicalizing).
Assert::assertNotEqualsIgnoringCase final public static function Asserts that two variables are not equal (ignoring case).
Assert::assertNotEqualsWithDelta final public static function Asserts that two variables are not equal (with delta).
Assert::assertNotFalse final public static function Asserts that a condition is not false.
Assert::assertNotInstanceOf final public static function Asserts that a variable is not of a given type.
Assert::assertNotNull final public static function Asserts that a variable is not null.
Assert::assertNotSame final public static function Asserts that two variables do not have the same type and value.
Used on objects, it asserts that two variables do not reference
the same object.
Assert::assertNotSameSize final public static function Assert that the size of two arrays (or `Countable` or `Traversable` objects)
is not the same.
Assert::assertNotTrue final public static function Asserts that a condition is not true.
Assert::assertNull final public static function Asserts that a variable is null.
Assert::assertObjectEquals final public static function
Assert::assertObjectHasProperty final public static function Asserts that an object has a specified property.
Assert::assertObjectNotHasProperty final public static function Asserts that an object does not have a specified property.
Assert::assertSame final public static function Asserts that two variables have the same type and value.
Used on objects, it asserts that two variables reference
the same object.
Assert::assertSameSize final public static function Assert that the size of two arrays (or `Countable` or `Traversable` objects)
is the same.
Assert::assertStringContainsString final public static function
Assert::assertStringContainsStringIgnoringCase final public static function
Assert::assertStringContainsStringIgnoringLineEndings final public static function
Assert::assertStringEndsNotWith final public static function Asserts that a string ends not with a given suffix.
Assert::assertStringEndsWith final public static function Asserts that a string ends with a given suffix.
Assert::assertStringEqualsFile final public static function Asserts that the contents of a string is equal
to the contents of a file.
Assert::assertStringEqualsFileCanonicalizing final public static function Asserts that the contents of a string is equal
to the contents of a file (canonicalizing).
Assert::assertStringEqualsFileIgnoringCase final public static function Asserts that the contents of a string is equal
to the contents of a file (ignoring case).
Assert::assertStringEqualsStringIgnoringLineEndings final public static function Asserts that two strings are equal except for line endings.
Assert::assertStringMatchesFormat final public static function Asserts that a string matches a given format string.
Assert::assertStringMatchesFormatFile final public static function Asserts that a string matches a given format file.
Assert::assertStringNotContainsString final public static function
Assert::assertStringNotContainsStringIgnoringCase final public static function
Assert::assertStringNotEqualsFile final public static function Asserts that the contents of a string is not equal
to the contents of a file.
Assert::assertStringNotEqualsFileCanonicalizing final public static function Asserts that the contents of a string is not equal
to the contents of a file (canonicalizing).
Assert::assertStringNotEqualsFileIgnoringCase final public static function Asserts that the contents of a string is not equal
to the contents of a file (ignoring case).
Assert::assertStringNotMatchesFormat Deprecated final public static function Asserts that a string does not match a given format string.
Assert::assertStringNotMatchesFormatFile Deprecated final public static function Asserts that a string does not match a given format string.
Assert::assertStringStartsNotWith final public static function Asserts that a string starts not with a given prefix.
Assert::assertStringStartsWith final public static function Asserts that a string starts with a given prefix.
Assert::assertThat final public static function Evaluates a PHPUnit\Framework\Constraint matcher object.
Assert::assertTrue final public static function Asserts that a condition is true.
Assert::assertXmlFileEqualsXmlFile final public static function Asserts that two XML files are equal.
Assert::assertXmlFileNotEqualsXmlFile final public static function Asserts that two XML files are not equal.
Assert::assertXmlStringEqualsXmlFile final public static function Asserts that two XML documents are equal.
Assert::assertXmlStringEqualsXmlString final public static function Asserts that two XML documents are equal.
Assert::assertXmlStringNotEqualsXmlFile final public static function Asserts that two XML documents are not equal.
Assert::assertXmlStringNotEqualsXmlString final public static function Asserts that two XML documents are not equal.
Assert::callback final public static function @psalm-template CallbackInput of mixed
Assert::containsEqual final public static function
Assert::containsIdentical final public static function
Assert::containsOnly final public static function
Assert::containsOnlyInstancesOf final public static function
Assert::countOf final public static function
Assert::directoryExists final public static function
Assert::equalTo final public static function
Assert::equalToCanonicalizing final public static function
Assert::equalToIgnoringCase final public static function
Assert::equalToWithDelta final public static function
Assert::fail final public static function Fails a test with the given message.
Assert::fileExists final public static function
Assert::getCount final public static function Return the current assertion count.
Assert::greaterThan final public static function
Assert::greaterThanOrEqual final public static function
Assert::identicalTo final public static function
Assert::isEmpty final public static function
Assert::isFalse final public static function
Assert::isFinite final public static function
Assert::isInfinite final public static function
Assert::isInstanceOf final public static function
Assert::isJson final public static function
Assert::isList final public static function
Assert::isNan final public static function
Assert::isNativeType private static function
Assert::isNull final public static function
Assert::isReadable final public static function
Assert::isTrue final public static function
Assert::isType final public static function @psalm-param &#039;array&#039;|&#039;boolean&#039;|&#039;bool&#039;|&#039;double&#039;|&#039;float&#039;|&#039;integer&#039;|&#039;int&#039;|&#039;null&#039;|&#039;numeric&#039;|&#039;object&#039;|&#039;real&#039;|&#039;resource&#039;|&#039;resource…
Assert::isWritable final public static function
Assert::lessThan final public static function
Assert::lessThanOrEqual final public static function
Assert::logicalAnd final public static function
Assert::logicalNot final public static function
Assert::logicalOr final public static function
Assert::logicalXor final public static function
Assert::markTestIncomplete final public static function Mark the test as incomplete.
Assert::markTestSkipped final public static function Mark the test as skipped.
Assert::matches final public static function
Assert::matchesRegularExpression final public static function
Assert::objectEquals final public static function
Assert::resetCount final public static function Reset the assertion counter.
Assert::stringContains final public static function
Assert::stringEndsWith final public static function @psalm-param non-empty-string $suffix
Assert::stringEqualsStringIgnoringLineEndings final public static function
Assert::stringStartsWith final public static function @psalm-param non-empty-string $prefix
RSS feed
Powered by Drupal