public function TranslatorCacheTest::testPrimaryAndFallbackCataloguesContainTheSameMessagesRegardlessOfCaching in Plug 7
File
- lib/
Symfony/ translation/ Tests/ TranslatorCacheTest.php, line 181
Class
Namespace
Symfony\Component\Translation\TestsCode
public function testPrimaryAndFallbackCataloguesContainTheSameMessagesRegardlessOfCaching() {
/*
* As a safeguard against potential BC breaks, make sure that primary and fallback
* catalogues (reachable via getFallbackCatalogue()) always contain the full set of
* messages provided by the loader. This must also be the case when these catalogues
* are (internally) read from a cache.
*
* Optimizations inside the translator must not change this behaviour.
*/
/*
* Create a translator that loads two catalogues for two different locales.
* The catalogues contain distinct sets of messages.
*/
$translator = new Translator('a', null, $this->tmpDir);
$translator
->setFallbackLocales(array(
'b',
));
$translator
->addLoader('array', new ArrayLoader());
$translator
->addResource('array', array(
'foo' => 'foo (a)',
), 'a');
$translator
->addResource('array', array(
'foo' => 'foo (b)',
), 'b');
$translator
->addResource('array', array(
'bar' => 'bar (b)',
), 'b');
$catalogue = $translator
->getCatalogue('a');
$this
->assertFalse($catalogue
->defines('bar'));
// Sure, the "a" catalogue does not contain that message.
$fallback = $catalogue
->getFallbackCatalogue();
$this
->assertTrue($fallback
->defines('foo'));
// "foo" is present in "a" and "b"
/*
* Now, repeat the same test.
* Behind the scenes, the cache is used. But that should not matter, right?
*/
$translator = new Translator('a', null, $this->tmpDir);
$translator
->setFallbackLocales(array(
'b',
));
$translator
->addLoader('array', new ArrayLoader());
$translator
->addResource('array', array(
'foo' => 'foo (a)',
), 'a');
$translator
->addResource('array', array(
'foo' => 'foo (b)',
), 'b');
$translator
->addResource('array', array(
'bar' => 'bar (b)',
), 'b');
$catalogue = $translator
->getCatalogue('a');
$this
->assertFalse($catalogue
->defines('bar'));
$fallback = $catalogue
->getFallbackCatalogue();
$this
->assertTrue($fallback
->defines('foo'));
}