1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
<?php
declare(strict_types=1);
namespace Doctrine\Tests\Common\Collections\Expr;
use Doctrine\Common\Collections\Expr\CompositeExpression;
use Doctrine\Common\Collections\Expr\Expression;
use Doctrine\Common\Collections\Expr\ExpressionVisitor;
use Doctrine\Common\Collections\Expr\Value;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\MockObject\MockBuilder;
use PHPUnit\Framework\TestCase;
use RuntimeException;
/** @covers \Doctrine\Common\Collections\Expr\CompositeExpression */
class CompositeExpressionTest extends TestCase
{
/** @return list<array{type:string, expressions: list<mixed>}> */
public static function invalidDataProvider(): array
{
return [
['type' => CompositeExpression::TYPE_AND, 'expressions' => [new Value('value')]],
['type' => CompositeExpression::TYPE_AND, 'expressions' => ['wrong-type']],
[
'type' => CompositeExpression::TYPE_NOT,
'expressions' => [
self::createStub(Expression::class),
self::createStub(Expression::class),
],
],
];
}
/**
* @param list<mixed> $expressions
*
* @dataProvider invalidDataProvider
*/
#[DataProvider('invalidDataProvider')]
public function testExceptions(string $type, array $expressions): void
{
$this->expectException(RuntimeException::class);
new CompositeExpression($type, $expressions);
}
public function testGetType(): void
{
$compositeExpression = $this->createCompositeExpression();
$expectedType = CompositeExpression::TYPE_AND;
$actualType = $compositeExpression->getType();
self::assertSame($expectedType, $actualType);
}
protected function createCompositeExpression(): CompositeExpression
{
$type = CompositeExpression::TYPE_AND;
$expressions = [$this->createMock(Expression::class)];
return new CompositeExpression($type, $expressions);
}
public function testGetExpressionList(): void
{
$compositeExpression = $this->createCompositeExpression();
$expectedExpressionList = [$this->createMock(Expression::class)];
$actualExpressionList = $compositeExpression->getExpressionList();
self::assertEquals($expectedExpressionList, $actualExpressionList);
}
public function testVisitor(): void
{
$compositeExpression = $this->createCompositeExpression();
$visitor = $this->getMockBuilder(ExpressionVisitor::class)->getMock();
$visitor
->expects($this->once())
->method('walkCompositeExpression');
$compositeExpression->visit($visitor);
}
}
|