* Dariusz Rumiński * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace PhpCsFixer\Tests\FixerDefinition; use PhpCsFixer\FixerDefinition\VersionSpecificationInterface; use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample; use PhpCsFixer\Tests\TestCase; /** * @author Andreas Möller * * @internal * * @covers \PhpCsFixer\FixerDefinition\VersionSpecificCodeSample */ final class VersionSpecificCodeSampleTest extends TestCase { public function testConstructorSetsValues(): void { $code = ' 'bar', ]; $codeSample = new VersionSpecificCodeSample( $code, $this->createVersionSpecificationDouble(), $configuration ); self::assertSame($code, $codeSample->getCode()); self::assertSame($configuration, $codeSample->getConfiguration()); } public function testConfigurationDefaultsToNull(): void { $codeSample = new VersionSpecificCodeSample( 'createVersionSpecificationDouble() ); self::assertNull($codeSample->getConfiguration()); } /** * @dataProvider provideIsSuitableForUsesVersionSpecificationCases */ public function testIsSuitableForUsesVersionSpecification(int $version, bool $isSatisfied): void { $codeSample = new VersionSpecificCodeSample( 'createVersionSpecificationDouble($isSatisfied) ); self::assertSame($isSatisfied, $codeSample->isSuitableFor($version)); } /** * @return iterable */ public static function provideIsSuitableForUsesVersionSpecificationCases(): iterable { yield 'is-satisfied' => [100, true]; yield 'is-not-satisfied' => [100, false]; } private function createVersionSpecificationDouble(bool $isSatisfied = true): VersionSpecificationInterface { return new class($isSatisfied) implements VersionSpecificationInterface { private bool $isSatisfied; public function __construct(bool $isSatisfied) { $this->isSatisfied = $isSatisfied; } public function isSatisfiedBy(int $version): bool { return $this->isSatisfied; } }; } }