<?php
-require_once 'application/Languages.php';
+namespace Shaarli;
+
+use Shaarli\Config\ConfigManager;
/**
* Class LanguagesTest.
*/
-class LanguagesTest extends PHPUnit_Framework_TestCase
+class LanguagesTest extends \PHPUnit_Framework_TestCase
{
+ /**
+ * @var string Config file path (without extension).
+ */
+ protected static $configFile = 'tests/utils/config/configJson';
+
+ /**
+ * @var ConfigManager
+ */
+ protected $conf;
+
+ /**
+ *
+ */
+ public function setUp()
+ {
+ $this->conf = new ConfigManager(self::$configFile);
+ }
+
+ /**
+ * Test t() with a simple non identified value.
+ */
+ public function testTranslateSingleNotIDGettext()
+ {
+ $this->conf->set('translation.mode', 'gettext');
+ new Languages('en', $this->conf);
+ $text = 'abcdé 564 fgK';
+ $this->assertEquals($text, t($text));
+ }
+
+ /**
+ * Test t() with a simple identified value in gettext mode.
+ */
+ public function testTranslateSingleIDGettext()
+ {
+ $this->conf->set('translation.mode', 'gettext');
+ new Languages('en', $this->conf);
+ $text = 'permalink';
+ $this->assertEquals($text, t($text));
+ }
+
+ /**
+ * Test t() with a non identified plural form in gettext mode.
+ */
+ public function testTranslatePluralNotIDGettext()
+ {
+ $this->conf->set('translation.mode', 'gettext');
+ new Languages('en', $this->conf);
+ $text = 'sandwich';
+ $nText = 'sandwiches';
+ $this->assertEquals('sandwiches', t($text, $nText, 0));
+ $this->assertEquals('sandwich', t($text, $nText, 1));
+ $this->assertEquals('sandwiches', t($text, $nText, 2));
+ }
+
+ /**
+ * Test t() with an identified plural form in gettext mode.
+ */
+ public function testTranslatePluralIDGettext()
+ {
+ $this->conf->set('translation.mode', 'gettext');
+ new Languages('en', $this->conf);
+ $text = 'shaare';
+ $nText = 'shaares';
+ // In english, zero is followed by plural form
+ $this->assertEquals('shaares', t($text, $nText, 0));
+ $this->assertEquals('shaare', t($text, $nText, 1));
+ $this->assertEquals('shaares', t($text, $nText, 2));
+ }
+
/**
* Test t() with a simple non identified value.
*/
- public function testTranslateSingleNotID()
+ public function testTranslateSingleNotIDPhp()
{
+ $this->conf->set('translation.mode', 'php');
+ new Languages('en', $this->conf);
$text = 'abcdé 564 fgK';
$this->assertEquals($text, t($text));
}
/**
- * Test t() with a non identified plural form.
+ * Test t() with a simple identified value in PHP mode.
*/
- public function testTranslatePluralNotID()
+ public function testTranslateSingleIDPhp()
{
- $text = '%s sandwich';
- $nText = '%s sandwiches';
- $this->assertEquals('0 sandwich', t($text, $nText));
- $this->assertEquals('1 sandwich', t($text, $nText, 1));
- $this->assertEquals('2 sandwiches', t($text, $nText, 2));
+ $this->conf->set('translation.mode', 'php');
+ new Languages('en', $this->conf);
+ $text = 'permalink';
+ $this->assertEquals($text, t($text));
}
/**
- * Test t() with a non identified invalid plural form.
+ * Test t() with a non identified plural form in PHP mode.
*/
- public function testTranslatePluralNotIDInvalid()
+ public function testTranslatePluralNotIDPhp()
{
+ $this->conf->set('translation.mode', 'php');
+ new Languages('en', $this->conf);
$text = 'sandwich';
$nText = 'sandwiches';
+ $this->assertEquals('sandwiches', t($text, $nText, 0));
$this->assertEquals('sandwich', t($text, $nText, 1));
$this->assertEquals('sandwiches', t($text, $nText, 2));
}
+
+ /**
+ * Test t() with an identified plural form in PHP mode.
+ */
+ public function testTranslatePluralIDPhp()
+ {
+ $this->conf->set('translation.mode', 'php');
+ new Languages('en', $this->conf);
+ $text = 'shaare';
+ $nText = 'shaares';
+ // In english, zero is followed by plural form
+ $this->assertEquals('shaares', t($text, $nText, 0));
+ $this->assertEquals('shaare', t($text, $nText, 1));
+ $this->assertEquals('shaares', t($text, $nText, 2));
+ }
+
+ /**
+ * Test t() with an invalid language set in the configuration in gettext mode.
+ */
+ public function testTranslateWithInvalidConfLanguageGettext()
+ {
+ $this->conf->set('translation.mode', 'gettext');
+ $this->conf->set('translation.language', 'nope');
+ new Languages('fr', $this->conf);
+ $text = 'grumble';
+ $this->assertEquals($text, t($text));
+ }
+
+ /**
+ * Test t() with an invalid language set in the configuration in PHP mode.
+ */
+ public function testTranslateWithInvalidConfLanguagePhp()
+ {
+ $this->conf->set('translation.mode', 'php');
+ $this->conf->set('translation.language', 'nope');
+ new Languages('fr', $this->conf);
+ $text = 'grumble';
+ $this->assertEquals($text, t($text));
+ }
+
+ /**
+ * Test t() with an invalid language set with auto language in gettext mode.
+ */
+ public function testTranslateWithInvalidAutoLanguageGettext()
+ {
+ $this->conf->set('translation.mode', 'gettext');
+ new Languages('nope', $this->conf);
+ $text = 'grumble';
+ $this->assertEquals($text, t($text));
+ }
+
+ /**
+ * Test t() with an invalid language set with auto language in PHP mode.
+ */
+ public function testTranslateWithInvalidAutoLanguagePhp()
+ {
+ $this->conf->set('translation.mode', 'php');
+ new Languages('nope', $this->conf);
+ $text = 'grumble';
+ $this->assertEquals($text, t($text));
+ }
+
+ /**
+ * Test t() with an extension language file in gettext mode
+ */
+ public function testTranslationExtensionGettext()
+ {
+ $this->conf->set('translation.mode', 'gettext');
+ $this->conf->set('translation.extensions.test', 'tests/utils/languages/');
+ new Languages('en', $this->conf);
+ $txt = 'car'; // ignore me poedit
+ $this->assertEquals('car', t($txt, $txt, 1, 'test'));
+ $this->assertEquals('Search', t('Search', 'Search', 1, 'test'));
+ }
+
+ /**
+ * Test t() with an extension language file in PHP mode
+ */
+ public function testTranslationExtensionPhp()
+ {
+ $this->conf->set('translation.mode', 'php');
+ $this->conf->set('translation.extensions.test', 'tests/utils/languages/');
+ new Languages('en', $this->conf);
+ $txt = 'car'; // ignore me poedit
+ $this->assertEquals('car', t($txt, $txt, 1, 'test'));
+ $this->assertEquals('Search', t('Search', 'Search', 1, 'test'));
+ }
}