Skip to content

Commit

Permalink
#767: Rename ClassBased/EnumCaseAdded to EnumBased/CaseAdded use in C…
Browse files Browse the repository at this point in the history
…ompareClasses s
  • Loading branch information
bdsl committed May 19, 2024
1 parent 6adaeb6 commit 20779b5
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 17 deletions.
2 changes: 2 additions & 0 deletions bin/roave-backward-compatibility-check.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
use Roave\BackwardCompatibility\CompareClasses;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\ClassBased;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\ClassConstantBased;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\EnumBased\CaseAdded;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\FunctionBased;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\InterfaceBased;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\MethodBased;
Expand Down Expand Up @@ -312,6 +313,7 @@ static function (string $installationPath) use ($composerIo): Installer {
),
)),
))),
new CaseAdded(),
),
);

Expand Down
8 changes: 8 additions & 0 deletions src/CompareClasses.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Roave\BackwardCompatibility\DetectChanges\BCBreak\ClassBased\ClassBased;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\InterfaceBased\InterfaceBased;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\TraitBased\TraitBased;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\EnumBased\EnumBased;
use Roave\BetterReflection\Reflection\ReflectionClass;
use Roave\BetterReflection\Reflector\Exception\IdentifierNotFound;
use Roave\BetterReflection\Reflector\Reflector;
Expand All @@ -20,6 +21,7 @@ public function __construct(
private ClassBased $classBasedComparisons,
private InterfaceBased $interfaceBasedComparisons,
private TraitBased $traitBasedComparisons,
private EnumBased $enumBasedComparisons,
) {
}

Expand Down Expand Up @@ -89,6 +91,12 @@ private function examineSymbol(
return;
}

if ($oldSymbol->isEnum()) {
yield from ($this->enumBasedComparisons)($oldSymbol, $newClass);

return;
}

yield from ($this->classBasedComparisons)($oldSymbol, $newClass);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

declare(strict_types=1);

namespace Roave\BackwardCompatibility\DetectChanges\BCBreak\ClassBased;
namespace Roave\BackwardCompatibility\DetectChanges\BCBreak\EnumBased;

use Roave\BackwardCompatibility\Change;
use Roave\BackwardCompatibility\Changes;
use Roave\BetterReflection\Reflection\ReflectionClass;
use Roave\BetterReflection\Reflection\ReflectionEnum;
use Roave\BetterReflection\Reflection\ReflectionEnumCase;

class EnumCaseAdded implements ClassBased
class CaseAdded implements EnumBased
{
public function __invoke(ReflectionClass $fromEnum, ReflectionClass $toEnum): Changes
{
Expand Down
11 changes: 11 additions & 0 deletions src/DetectChanges/BCBreak/EnumBased/EnumBased.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

namespace Roave\BackwardCompatibility\DetectChanges\BCBreak\EnumBased;

use Roave\BackwardCompatibility\Changes;
use Roave\BetterReflection\Reflection\ReflectionClass;

interface EnumBased
{
public function __invoke(ReflectionClass $fromInterface, ReflectionClass $toInterface): Changes;
}
6 changes: 6 additions & 0 deletions test/unit/CompareClassesTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Roave\BackwardCompatibility\Changes;
use Roave\BackwardCompatibility\CompareClasses;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\ClassBased\ClassBased;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\EnumBased\EnumBased;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\InterfaceBased\InterfaceBased;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\TraitBased\TraitBased;

Expand All @@ -27,6 +28,9 @@ final class CompareClassesTest extends TestCase
/** @var TraitBased&MockObject */
private TraitBased $traitBasedComparison;

/** @var EnumBased&MockObject */
private EnumBased $enumBasedComparison;

private CompareClasses $compareClasses;

public static function setUpBeforeClass(): void
Expand All @@ -41,10 +45,12 @@ protected function setUp(): void
$this->classBasedComparison = $this->createMock(ClassBased::class);
$this->interfaceBasedComparison = $this->createMock(InterfaceBased::class);
$this->traitBasedComparison = $this->createMock(TraitBased::class);
$this->enumBasedComparison = $this->createMock(EnumBased::class);
$this->compareClasses = new CompareClasses(
$this->classBasedComparison,
$this->interfaceBasedComparison,
$this->traitBasedComparison,
$this->enumBasedComparison,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,17 @@

declare(strict_types=1);

namespace RoaveTest\BackwardCompatibility\DetectChanges\BCBreak\ClassBased;
namespace RoaveTest\BackwardCompatibility\DetectChanges\BCBreak\EnumBased;

use PHPUnit\Framework\TestCase;
use Roave\BackwardCompatibility\Change;
use Roave\BackwardCompatibility\Changes;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\ClassBased\ClassBecameTrait;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\ClassBased\EnumCaseAdded;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\ClassBased\MethodChanged;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\MethodBased\MethodBased;
use Roave\BackwardCompatibility\DetectChanges\BCBreak\EnumBased\CaseAdded;
use Roave\BetterReflection\BetterReflection;
use Roave\BetterReflection\Reflection\ReflectionClass;
use Roave\BetterReflection\Reflection\ReflectionMethod;
use Roave\BetterReflection\Reflector\DefaultReflector;
use Roave\BetterReflection\SourceLocator\Type\SingleFileSourceLocator;
use Roave\BetterReflection\SourceLocator\Type\StringSourceLocator;
use RoaveTest\BackwardCompatibility\Assertion;

use function strtolower;

/** @covers \Roave\BackwardCompatibility\DetectChanges\BCBreak\ClassBased\EnumCaseAdded */
/** @covers \Roave\BackwardCompatibility\DetectChanges\BCBreak\EnumBased\CaseAdded */
final class EnumCaseAddedTest extends TestCase
{
/**
Expand All @@ -35,7 +26,7 @@ public function testDiffs(
array $expectedMessages,
): void
{
$changes = (new EnumCaseAdded())($fromEnum, $toEnum);
$changes = (new CaseAdded())($fromEnum, $toEnum);

self::assertSame(
$expectedMessages,
Expand All @@ -58,11 +49,11 @@ public function enumsToBeTested()
(new DefaultReflector(new SingleFileSourceLocator(
__DIR__ . '/../../../../asset/api/old/EnumWithCasesBeingAdded.php',
$locator,
)))->reflectClass(\RoaveTestAsset\EnumWithCasesBeingAdded::class),
)))->reflectClass('RoaveTestAsset\EnumWithCasesBeingAdded'),
(new DefaultReflector(new SingleFileSourceLocator(
__DIR__ . '/../../../../asset/api/new/EnumWithCasesBeingAdded.php',
$locator,
)))->reflectClass(\RoaveTestAsset\EnumWithCasesBeingAdded::class),
)))->reflectClass('RoaveTestAsset\EnumWithCasesBeingAdded'),
[
'[BC] ADDED: Case RoaveTestAsset\EnumWithCasesBeingAdded::January was added',
'[BC] ADDED: Case RoaveTestAsset\EnumWithCasesBeingAdded::February was added',
Expand Down

0 comments on commit 20779b5

Please sign in to comment.