148 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			148 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?php | ||
|  | 
 | ||
|  | /* | ||
|  |  * This file is part of the Symfony package. | ||
|  |  * | ||
|  |  * (c) Fabien Potencier <fabien@symfony.com> | ||
|  |  * | ||
|  |  * For the full copyright and license information, please view the LICENSE | ||
|  |  * file that was distributed with this source code. | ||
|  |  */ | ||
|  | 
 | ||
|  | namespace Symfony\Component\Finder\Tests\Expression; | ||
|  | 
 | ||
|  | use PHPUnit\Framework\TestCase; | ||
|  | use Symfony\Component\Finder\Expression\Expression; | ||
|  | 
 | ||
|  | /** | ||
|  |  * @group legacy | ||
|  |  */ | ||
|  | class RegexTest extends TestCase | ||
|  | { | ||
|  |     /** | ||
|  |      * @dataProvider getHasFlagsData | ||
|  |      */ | ||
|  |     public function testHasFlags($regex, $start, $end) | ||
|  |     { | ||
|  |         $expr = new Expression($regex); | ||
|  | 
 | ||
|  |         $this->assertEquals($start, $expr->getRegex()->hasStartFlag()); | ||
|  |         $this->assertEquals($end, $expr->getRegex()->hasEndFlag()); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @dataProvider getHasJokersData | ||
|  |      */ | ||
|  |     public function testHasJokers($regex, $start, $end) | ||
|  |     { | ||
|  |         $expr = new Expression($regex); | ||
|  | 
 | ||
|  |         $this->assertEquals($start, $expr->getRegex()->hasStartJoker()); | ||
|  |         $this->assertEquals($end, $expr->getRegex()->hasEndJoker()); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @dataProvider getSetFlagsData | ||
|  |      */ | ||
|  |     public function testSetFlags($regex, $start, $end, $expected) | ||
|  |     { | ||
|  |         $expr = new Expression($regex); | ||
|  |         $expr->getRegex()->setStartFlag($start)->setEndFlag($end); | ||
|  | 
 | ||
|  |         $this->assertEquals($expected, $expr->render()); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @dataProvider getSetJokersData | ||
|  |      */ | ||
|  |     public function testSetJokers($regex, $start, $end, $expected) | ||
|  |     { | ||
|  |         $expr = new Expression($regex); | ||
|  |         $expr->getRegex()->setStartJoker($start)->setEndJoker($end); | ||
|  | 
 | ||
|  |         $this->assertEquals($expected, $expr->render()); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testOptions() | ||
|  |     { | ||
|  |         $expr = new Expression('~abc~is'); | ||
|  |         $expr->getRegex()->removeOption('i')->addOption('m'); | ||
|  | 
 | ||
|  |         $this->assertEquals('~abc~sm', $expr->render()); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testMixFlagsAndJokers() | ||
|  |     { | ||
|  |         $expr = new Expression('~^.*abc.*$~is'); | ||
|  | 
 | ||
|  |         $expr->getRegex()->setStartFlag(false)->setEndFlag(false)->setStartJoker(false)->setEndJoker(false); | ||
|  |         $this->assertEquals('~abc~is', $expr->render()); | ||
|  | 
 | ||
|  |         $expr->getRegex()->setStartFlag(true)->setEndFlag(true)->setStartJoker(true)->setEndJoker(true); | ||
|  |         $this->assertEquals('~^.*abc.*$~is', $expr->render()); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * @dataProvider getReplaceJokersTestData | ||
|  |      */ | ||
|  |     public function testReplaceJokers($regex, $expected) | ||
|  |     { | ||
|  |         $expr = new Expression($regex); | ||
|  |         $expr = $expr->getRegex()->replaceJokers('@'); | ||
|  | 
 | ||
|  |         $this->assertEquals($expected, $expr->renderPattern()); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getHasFlagsData() | ||
|  |     { | ||
|  |         return array( | ||
|  |             array('~^abc~', true, false), | ||
|  |             array('~abc$~', false, true), | ||
|  |             array('~abc~', false, false), | ||
|  |             array('~^abc$~', true, true), | ||
|  |             array('~^abc\\$~', true, false), | ||
|  |         ); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getHasJokersData() | ||
|  |     { | ||
|  |         return array( | ||
|  |             array('~.*abc~', true, false), | ||
|  |             array('~abc.*~', false, true), | ||
|  |             array('~abc~', false, false), | ||
|  |             array('~.*abc.*~', true, true), | ||
|  |             array('~.*abc\\.*~', true, false), | ||
|  |         ); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getSetFlagsData() | ||
|  |     { | ||
|  |         return array( | ||
|  |             array('~abc~', true, false, '~^abc~'), | ||
|  |             array('~abc~', false, true, '~abc$~'), | ||
|  |             array('~abc~', false, false, '~abc~'), | ||
|  |             array('~abc~', true, true, '~^abc$~'), | ||
|  |         ); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getSetJokersData() | ||
|  |     { | ||
|  |         return array( | ||
|  |             array('~abc~', true, false, '~.*abc~'), | ||
|  |             array('~abc~', false, true, '~abc.*~'), | ||
|  |             array('~abc~', false, false, '~abc~'), | ||
|  |             array('~abc~', true, true, '~.*abc.*~'), | ||
|  |         ); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getReplaceJokersTestData() | ||
|  |     { | ||
|  |         return array( | ||
|  |             array('~.abc~', '@abc'), | ||
|  |             array('~\\.abc~', '\\.abc'), | ||
|  |             array('~\\\\.abc~', '\\\\@abc'), | ||
|  |             array('~\\\\\\.abc~', '\\\\\\.abc'), | ||
|  |         ); | ||
|  |     } | ||
|  | } |