123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?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\Translation\Tests\Extractor;
-
- use PHPUnit\Framework\TestCase;
- use Symfony\Component\Translation\Extractor\PhpExtractor;
- use Symfony\Component\Translation\MessageCatalogue;
-
- class PhpExtractorTest extends TestCase
- {
- /**
- * @dataProvider resourcesProvider
- *
- * @param array|string $resource
- */
- public function testExtraction($resource)
- {
- // Arrange
- $extractor = new PhpExtractor();
- $extractor->setPrefix('prefix');
- $catalogue = new MessageCatalogue('en');
-
- // Act
- $extractor->extract($resource, $catalogue);
-
- $expectedHeredoc = <<<EOF
- heredoc key with whitespace and escaped \$\n sequences
- EOF;
- $expectedNowdoc = <<<'EOF'
- nowdoc key with whitespace and nonescaped \$\n sequences
- EOF;
- // Assert
- $expectedCatalogue = array(
- 'messages' => array(
- 'single-quoted key' => 'prefixsingle-quoted key',
- 'double-quoted key' => 'prefixdouble-quoted key',
- 'heredoc key' => 'prefixheredoc key',
- 'nowdoc key' => 'prefixnowdoc key',
- "double-quoted key with whitespace and escaped \$\n\" sequences" => "prefixdouble-quoted key with whitespace and escaped \$\n\" sequences",
- 'single-quoted key with whitespace and nonescaped \$\n\' sequences' => 'prefixsingle-quoted key with whitespace and nonescaped \$\n\' sequences',
- 'single-quoted key with "quote mark at the end"' => 'prefixsingle-quoted key with "quote mark at the end"',
- $expectedHeredoc => 'prefix'.$expectedHeredoc,
- $expectedNowdoc => 'prefix'.$expectedNowdoc,
- '{0} There is no apples|{1} There is one apple|]1,Inf[ There are %count% apples' => 'prefix{0} There is no apples|{1} There is one apple|]1,Inf[ There are %count% apples',
- ),
- 'not_messages' => array(
- 'other-domain-test-no-params-short-array' => 'prefixother-domain-test-no-params-short-array',
- 'other-domain-test-no-params-long-array' => 'prefixother-domain-test-no-params-long-array',
- 'other-domain-test-params-short-array' => 'prefixother-domain-test-params-short-array',
- 'other-domain-test-params-long-array' => 'prefixother-domain-test-params-long-array',
- 'other-domain-test-trans-choice-short-array-%count%' => 'prefixother-domain-test-trans-choice-short-array-%count%',
- 'other-domain-test-trans-choice-long-array-%count%' => 'prefixother-domain-test-trans-choice-long-array-%count%',
- 'typecast' => 'prefixtypecast',
- 'msg1' => 'prefixmsg1',
- 'msg2' => 'prefixmsg2',
- ),
- );
- $actualCatalogue = $catalogue->all();
-
- $this->assertEquals($expectedCatalogue, $actualCatalogue);
- }
-
- public function resourcesProvider()
- {
- $directory = __DIR__.'/../fixtures/extractor/';
- $splFiles = array();
- foreach (new \DirectoryIterator($directory) as $fileInfo) {
- if ($fileInfo->isDot()) {
- continue;
- }
- if ('translation.html.php' === $fileInfo->getBasename()) {
- $phpFile = $fileInfo->getPathname();
- }
- $splFiles[] = $fileInfo->getFileInfo();
- }
-
- return array(
- array($directory),
- array($phpFile),
- array(glob($directory.'*')),
- array($splFiles),
- array(new \ArrayObject(glob($directory.'*'))),
- array(new \ArrayObject($splFiles)),
- );
- }
- }
|