initial commit

This commit is contained in:
JonPurvis
2023-09-18 01:00:50 +01:00
parent c08f33638a
commit 6c73a3d90b
8 changed files with 96 additions and 0 deletions

View File

@ -862,4 +862,20 @@ final class Expectation
FileLineFinder::where(fn (string $line): bool => str_contains($line, 'class')), FileLineFinder::where(fn (string $line): bool => str_contains($line, 'class')),
); );
} }
/**
* Asserts that the given expectation target has a constructor method.
*/
public function toHaveConstructor(): ArchExpectation
{
return $this->toHaveMethod('__construct');
}
/**
* Asserts that the given expectation target has a destructor method.
*/
public function toHaveDestructor(): ArchExpectation
{
return $this->toHaveMethod('__destruct');
}
} }

View File

@ -469,4 +469,20 @@ final class OppositeExpectation
implode(' ', array_map(fn (mixed $argument): string => $toString($argument), $arguments)), implode(' ', array_map(fn (mixed $argument): string => $toString($argument), $arguments)),
)); ));
} }
/**
* Asserts that the given expectation target does not have a constructor method.
*/
public function toHaveConstructor(): ArchExpectation
{
return $this->toHaveMethod('__construct');
}
/**
* Asserts that the given expectation target does not have a destructor method.
*/
public function toHaveDestructor(): ArchExpectation
{
return $this->toHaveMethod('__destruct');
}
} }

View File

@ -0,0 +1,9 @@
<?php
test('class has constructor')
->expect('Tests\Fixtures\Arch\ToHaveConstructor\HasConstructor\HasConstructor')
->toHaveConstructor();
test('class has no constructor')
->expect('Tests\Fixtures\Arch\ToHaveConstructor\HasNoConstructor\HasNoConstructor')
->not->toHaveConstructor();

View File

@ -0,0 +1,9 @@
<?php
test('class has destructor')
->expect('Tests\Fixtures\Arch\ToHaveDestructor\HasDestructor\HasDestructor')
->toHaveDestructor();
test('class has no destructor')
->expect('Tests\Fixtures\Arch\ToHaveDestructor\HasNoDestructor\HasNoDestructor')
->not->toHaveDestructor();

View File

@ -0,0 +1,13 @@
<?php
declare(strict_types=1);
namespace Tests\Fixtures\Arch\ToHaveConstructor\HasConstructor;
class HasConstructor
{
public function __construct()
{
}
}

View File

@ -0,0 +1,10 @@
<?php
declare(strict_types=1);
namespace Tests\Fixtures\Arch\ToHaveConstructor\HasNoConstructor;
class HasNoConstructor
{
}

View File

@ -0,0 +1,13 @@
<?php
declare(strict_types=1);
namespace Tests\Fixtures\Arch\ToHaveDestructor\HasDestructor;
class HasDestructor
{
public function __destruct()
{
}
}

View File

@ -0,0 +1,10 @@
<?php
declare(strict_types=1);
namespace Tests\Fixtures\Arch\ToHaveDestructor\HasNoDestructor;
class HasNoDestructor
{
}