Anton Grebnev
13 years ago
1 changed files with 187 additions and 0 deletions
@ -0,0 +1,187 @@ |
|||||
|
<?php |
||||
|
|
||||
|
/* |
||||
|
* @copyright NetMonsters <team@netmonsters.ru> |
||||
|
* @link http://netmonsters.ru |
||||
|
* @package Majestic |
||||
|
* @subpackage UnitTests |
||||
|
* @since 2011-10-31 |
||||
|
* |
||||
|
* Unit tests for I18N class |
||||
|
*/ |
||||
|
|
||||
|
require_once dirname(__FILE__) . '/../../Registry.php'; |
||||
|
require_once dirname(__FILE__) . '/../../Config.php'; |
||||
|
require_once dirname(__FILE__) . '/../../classes/Env.class.php'; |
||||
|
require_once dirname(__FILE__) . '/../../i18n/I18N.php'; |
||||
|
|
||||
|
/** |
||||
|
* @runTestsInSeparateProcesses |
||||
|
*/ |
||||
|
class I18NTest extends PHPUnit_Framework_TestCase |
||||
|
{ |
||||
|
|
||||
|
public function run(PHPUnit_Framework_TestResult $result = NULL) |
||||
|
{ |
||||
|
$this->setPreserveGlobalState(false); |
||||
|
return parent::run($result); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @runInSeparateProcess |
||||
|
*/ |
||||
|
public function testInit() |
||||
|
{ |
||||
|
$this->setConstants(); |
||||
|
Config::set('I18N', array('locales' => array('ru' => 'ru-ru', 'us' => 'en-us'))); |
||||
|
|
||||
|
I18N::init(); |
||||
|
$this->assertAttributeEquals(array('ru' => 'ru-ru', 'us' => 'en-us'), 'locales', 'I18N'); |
||||
|
$this->assertAttributeEquals('ru-ru', 'locale', 'I18N'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @expectedException Exception |
||||
|
*/ |
||||
|
public function testInitNoConfig() |
||||
|
{ |
||||
|
I18N::init(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @runInSeparateProcess |
||||
|
*/ |
||||
|
public function testInitFullConfig() |
||||
|
{ |
||||
|
$this->setConstants(); |
||||
|
|
||||
|
Config::set('I18N', array('locales' => array('ru' => 'ru-ru', 'en' => 'en_US'), 'bidi' => 'bidivalue', 'default' => 'ru')); |
||||
|
I18N::init(); |
||||
|
$this->assertAttributeEquals('ru-ru', 'locale', 'I18N'); |
||||
|
$this->assertAttributeEquals('bidivalue', 'bidi', 'I18N'); |
||||
|
$this->assertAttributeEquals('ru', 'default', 'I18N'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @runInSeparateProcess |
||||
|
*/ |
||||
|
public function testInitPostLangSet() |
||||
|
{ |
||||
|
$this->setConstants(); |
||||
|
|
||||
|
$_POST['lang'] = 'en'; |
||||
|
$_COOKIE['lang'] = 'en'; |
||||
|
Config::set('I18N', array('locales' => array('ru' => 'ru-ru', 'en' => 'en_US'), 'bidi' => 'bidivalue', 'default' => 'ru')); |
||||
|
|
||||
|
set_exit_overload(function() { return FALSE; }); |
||||
|
|
||||
|
I18N::init(); |
||||
|
$this->assertAttributeEquals('en_US', 'locale', 'I18N'); |
||||
|
unset_exit_overload(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @runInSeparateProcess |
||||
|
* @expectedException PHPUnit_Framework_Error |
||||
|
*/ |
||||
|
public function testInitSetDefaultLangNotInLocales() |
||||
|
{ |
||||
|
$this->setConstants(); |
||||
|
|
||||
|
Config::set('I18N', array('locales' => array('rus' => 'ru_RU'), 'default' => 'ru')); |
||||
|
I18N::init(); |
||||
|
$this->assertAttributeEquals('ru_RU', 'locale', 'I18N'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @runInSeparateProcess |
||||
|
*/ |
||||
|
public function testInitServerLangConfigured() |
||||
|
{ |
||||
|
$this->setConstants(); |
||||
|
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'ru'; |
||||
|
|
||||
|
Config::set('I18N', array('locales' => array('ru_ru' => 'ru_RU', 'ru' => 'ru-ru', 'us' => 'en-us'))); |
||||
|
I18N::init(); |
||||
|
$this->assertAttributeEquals('ru-ru', 'locale', 'I18N'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @runInSeparateProcess |
||||
|
*/ |
||||
|
public function testInitServerLangConfiguredWithWeights() |
||||
|
{ |
||||
|
$this->setConstants(); |
||||
|
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'; |
||||
|
|
||||
|
Config::set('I18N', array('locales' => array('en_US' => 'en-us'))); |
||||
|
I18N::init(); |
||||
|
$this->assertAttributeEquals('en-us', 'locale', 'I18N'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @runInSeparateProcess |
||||
|
*/ |
||||
|
public function testInitServerLangConfiguredWithWeightsNoLocale() |
||||
|
{ |
||||
|
$this->setConstants(); |
||||
|
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'; |
||||
|
|
||||
|
Config::set('I18N', array('locales' => array('en' => 'en_US'))); |
||||
|
I18N::init(); |
||||
|
$this->assertAttributeEquals('en_US', 'locale', 'I18N'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @runInSeparateProcess |
||||
|
*/ |
||||
|
public function testGetLang() |
||||
|
{ |
||||
|
$this->setConstants(); |
||||
|
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'; |
||||
|
|
||||
|
Config::set('I18N', array('locales' => array('en' => 'en_US'), 'default' => 'ru')); |
||||
|
I18N::init(); |
||||
|
$this->assertEquals('en', I18N::getLang()); |
||||
|
$this->assertEquals('ru', I18N::getDefaultLang()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @runInSeparateProcess |
||||
|
*/ |
||||
|
public function testLangs() |
||||
|
{ |
||||
|
$this->setConstants(); |
||||
|
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'; |
||||
|
|
||||
|
Config::set('I18N', array('locales' => array('ru' => 'ru-ru'), 'default' => 'ru')); |
||||
|
I18N::init(); |
||||
|
I18N::setLangs(array('en' => 'en-us', 'fr' => 'fr-fr')); |
||||
|
$this->assertEquals(array('en' => 'en-us', 'fr' => 'fr-fr'), I18N::getLangs()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @runInSeparateProcess |
||||
|
*/ |
||||
|
public function testLangName() |
||||
|
{ |
||||
|
$this->setConstants(); |
||||
|
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'; |
||||
|
|
||||
|
Config::set('I18N', array('locales' => array('ru' => 'ru-ru'), 'default' => 'ru')); |
||||
|
I18N::init(); |
||||
|
I18N::setLangs(array('ru' => 'ru_ru', 'en' => 'en-us', 'fr' => 'fr-fr')); |
||||
|
$this->assertEquals('ru_ru', I18N::getLangName()); |
||||
|
$this->assertFalse(I18N::getLangName('br')); |
||||
|
} |
||||
|
|
||||
|
private function setConstants() |
||||
|
{ |
||||
|
if (!defined('PATH')) { |
||||
|
define('PATH', '/some/path/'); |
||||
|
} |
||||
|
if (!defined('APP')) { |
||||
|
define('APP', '/some/app/'); |
||||
|
} |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue