aboutsummaryrefslogblamecommitdiffhomepage
path: root/tests/LanguagesTest.php
blob: 46bfcd7254000b84f9d05d6694f75dbbd2abe3e3 (plain) (tree)
1
2
3
4
5
6
7
8
9

     


                                 



                       
                                                       

       




































































                                                                   

                                                   
                                                 
     

                                                    




                                             
                                                           
       
                                              
     



                                                    


       
                                                              
       
                                                 
     

                                                    

                              
                                                               


                                                               




















































































                                                                                  
 
<?php

namespace Shaarli;

use Shaarli\Config\ConfigManager;

/**
 * Class LanguagesTest.
 */
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 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 simple identified value in PHP mode.
     */
    public function testTranslateSingleIDPhp()
    {
        $this->conf->set('translation.mode', 'php');
        new Languages('en', $this->conf);
        $text = 'permalink';
        $this->assertEquals($text, t($text));
    }

    /**
     * Test t() with a non identified plural form in PHP mode.
     */
    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);
        $this->assertEquals('car', t('car', 'car', 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);
        $this->assertEquals('car', t('car', 'car', 1, 'test'));
        $this->assertEquals('Search', t('Search', 'Search', 1, 'test'));
    }
}