From deb6dea76dec7d38671afa5ff3f2c278ea28dd65 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Mon, 3 Oct 2011 12:12:49 +0200 Subject: [PATCH] [Translation] Add failing tests to verify that UTF-8 lang files can't be used with another charset --- .../Component/Translation/TranslatorTest.php | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/Symfony/Tests/Component/Translation/TranslatorTest.php b/tests/Symfony/Tests/Component/Translation/TranslatorTest.php index f1eb5ee807ef..111ed7e7aadf 100644 --- a/tests/Symfony/Tests/Component/Translation/TranslatorTest.php +++ b/tests/Symfony/Tests/Component/Translation/TranslatorTest.php @@ -132,6 +132,27 @@ public function testFlattenedTrans($expected, $messages, $id) $this->assertEquals($expected, $translator->trans($id, array(), '', 'fr')); } + /** + * @dataProvider getLoadCatalogueTests + */ + public function testLoadCatalogueConvertsEncoding($translation, $charset) + { + if (!extension_loaded('mbstring')) { + $this->markTestSkipped('This test relies on the mbstring extension'); + } + $translator = new Translator('en', new MessageSelector(), $charset); + $translator->addLoader('array', new ArrayLoader()); + $translator->addResource('array', array('id' => $translation), 'en', 'messages'); + + if (null !== $charset && mb_detect_encoding($translation) !== $charset) { + $expected = mb_convert_encoding($translation, $charset, mb_detect_encoding($translation)); + } else { + $expected = $translation; + } + + $this->assertEquals($expected, $translator->trans('id', array(), 'messages', 'en')); + } + /** * @dataProvider getTransChoiceTests */ @@ -199,6 +220,21 @@ public function getTransChoiceTests() ); } + public function getLoadCatalogueTests() + { + return array( + array('oia', null), + array('oia', 'UTF-8'), + array('öïä', 'UTF-8'), + array('oia', 'ISO-8859-1'), + array('öïä', 'ISO-8859-1'), + array('цфЭ', 'UTF-8'), + array('цфЭ', 'KOI8-R'), + array('ヨラリ', 'UTF-8'), + array('ヨラリ', 'SJIS'), + ); + } + public function testTransChoiceFallback() { $translator = new Translator('ru', new MessageSelector());