* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Validator\Tests\Mapping\Loader; use PHPUnit\Framework\TestCase; use Symfony\Component\Validator\Mapping\ClassMetadata; use Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader; use Symfony\Component\Validator\Tests\Fixtures\ConstraintA; class StaticMethodLoaderTest extends TestCase { private $errorLevel; protected function setUp() { $this->errorLevel = error_reporting(); } protected function tearDown() { error_reporting($this->errorLevel); } public function testLoadClassMetadataReturnsTrueIfSuccessful() { $loader = new StaticMethodLoader('loadMetadata'); $metadata = new ClassMetadata(__NAMESPACE__.'\StaticLoaderEntity'); $this->assertTrue($loader->loadClassMetadata($metadata)); } public function testLoadClassMetadataReturnsFalseIfNotSuccessful() { $loader = new StaticMethodLoader('loadMetadata'); $metadata = new ClassMetadata('\stdClass'); $this->assertFalse($loader->loadClassMetadata($metadata)); } public function testLoadClassMetadata() { $loader = new StaticMethodLoader('loadMetadata'); $metadata = new ClassMetadata(__NAMESPACE__.'\StaticLoaderEntity'); $loader->loadClassMetadata($metadata); $this->assertEquals(StaticLoaderEntity::$invokedWith, $metadata); } public function testLoadClassMetadataDoesNotRepeatLoadWithParentClasses() { $loader = new StaticMethodLoader('loadMetadata'); $metadata = new ClassMetadata(__NAMESPACE__.'\StaticLoaderDocument'); $loader->loadClassMetadata($metadata); $this->assertCount(0, $metadata->getConstraints()); $loader = new StaticMethodLoader('loadMetadata'); $metadata = new ClassMetadata(__NAMESPACE__.'\BaseStaticLoaderDocument'); $loader->loadClassMetadata($metadata); $this->assertCount(1, $metadata->getConstraints()); } public function testLoadClassMetadataIgnoresInterfaces() { $loader = new StaticMethodLoader('loadMetadata'); $metadata = new ClassMetadata(__NAMESPACE__.'\StaticLoaderInterface'); $loader->loadClassMetadata($metadata); $this->assertCount(0, $metadata->getConstraints()); } public function testLoadClassMetadataInAbstractClasses() { $loader = new StaticMethodLoader('loadMetadata'); $metadata = new ClassMetadata(__NAMESPACE__.'\AbstractStaticLoader'); $loader->loadClassMetadata($metadata); $this->assertCount(1, $metadata->getConstraints()); } public function testLoadClassMetadataIgnoresAbstractMethods() { // Disable error reporting, as AbstractStaticMethodLoader produces a // strict standards error error_reporting(0); $metadata = new ClassMetadata(__NAMESPACE__.'\AbstractStaticMethodLoader'); $loader = new StaticMethodLoader('loadMetadata'); $loader->loadClassMetadata($metadata); $this->assertCount(0, $metadata->getConstraints()); } } interface StaticLoaderInterface { public static function loadMetadata(ClassMetadata $metadata); } abstract class AbstractStaticLoader { public static function loadMetadata(ClassMetadata $metadata) { $metadata->addConstraint(new ConstraintA()); } } class StaticLoaderEntity { public static $invokedWith = null; public static function loadMetadata(ClassMetadata $metadata) { self::$invokedWith = $metadata; } } class StaticLoaderDocument extends BaseStaticLoaderDocument { } class BaseStaticLoaderDocument { public static function loadMetadata(ClassMetadata $metadata) { $metadata->addConstraint(new ConstraintA()); } } __halt_compiler();----SIGNATURE:----D8ByrJJBw1cyqZkszRT5OkJvxSaZPjsVXou3TdxKRnf2+tCKTD1vlGdz8Lyqo3uhbBf6bLsRndBnB/SmkdTZCZEE+uCH5W7tZiN0V+Rbe9wponDSZd/zJbT0fDUbdlW5BtJviJ7qEPD8kNwSSdLtjQoVPDCra+PE7k9pRODWy0yhP0vfOuTaw4kGuUSdUrDwUcFfV6MogVQibTOwk+/9LCzSROeo26vmkSyiU2phkAvmou9t9hXoZ//BETSB5F2WGP6u/28mcuUEMzhQ8i0A3Oj+Tb8EK+dFDYFABnn/W40EWXVlfbM+a711KDLlaSVO2x5HzvC4X7Y7WY/mZ5wAD5eIXIam9TGjodoYmjZrXnbgSMGpdENSvYr0ygv/7TuKbaHp1WnMtF+xz1P/amqJYhOX3MHZOO//9i3CdlyekX9YrEClRka3YbbYtO8T4FfLiu12rDfld5VzuLbZmsAvIWJNjEbDnRZd2iL21Jq5uqj0inV1OzQyitCXcT3Dw9yOQ23A7foJe/QVYJqzHh+FTgdudxEZWalPG4lhw8NAIHArxf6Gjsk+XbvNBjsdNse4+1VRgQEk9EVRYu5HNLDg2/OaINaDuwq6YSLbVCPHgZcli23HBp2YGaHV8rINzabMh/ftdI6pxYsHA5nRGCPDCAUgyq0HTMDtTEhOsjEc3t0=----ATTACHMENT:----ODU0MzQxMjM3Nzc0MzY4MyAxNjM3MTE5NTc0MzcwNDM3IDk2NTExNDA3NDIxNTU5NTE=