* 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; use Prophecy\Prophecy; /** * @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->createVersionSpecificationMock()->reveal(), $configuration ); self::assertSame($code, $codeSample->getCode()); self::assertSame($configuration, $codeSample->getConfiguration()); } public function testConfigurationDefaultsToNull(): void { $codeSample = new VersionSpecificCodeSample( 'createVersionSpecificationMock()->reveal() ); self::assertNull($codeSample->getConfiguration()); } /** * @dataProvider provideIsSuitableForUsesVersionSpecificationCases */ public function testIsSuitableForUsesVersionSpecification(int $version, bool $isSatisfied): void { $versionSpecification = $this->createVersionSpecificationMock(); $versionSpecification ->isSatisfiedBy($version) ->willReturn($isSatisfied) ; $codeSample = new VersionSpecificCodeSample( 'reveal() ); self::assertSame($isSatisfied, $codeSample->isSuitableFor($version)); } public static function provideIsSuitableForUsesVersionSpecificationCases(): iterable { yield 'is-satisfied' => [\PHP_VERSION_ID, true]; yield 'is-not-satisfied' => [\PHP_VERSION_ID, false]; } /** * @return Prophecy\ObjectProphecy|VersionSpecificationInterface */ private function createVersionSpecificationMock() { return $this->prophesize(\PhpCsFixer\FixerDefinition\VersionSpecificationInterface::class); } }